00:00
把这个指标拿过来。对吧,哎,数据往这一放,那剩下的时间呢,下面就是它数据,哪来的数据呢,是从这个DWS层宽表。DWSN宽表。在这儿。抵达了每日会员行为,诶不是会员啊,设备啊。把这里的字段过来。对,好,也就是说输入部分有了,输出部分有了,那接下来右侧开始像这里面插入数据对吧,按插入数据好,Insert o Wright RI。推吧,是不是分几点。一看你一看它不是分级表对吧?啊,它是一个累积的,累积型的一个表,不是表。
01:02
Thatt from数据来源哪呢?哎,来源于两部分,那一写这块代码的时候就是这样,两部分后还有一个招引,有,然后on条件,咔咔,这个架是往这一摆是吧?啊然后呢,就开始往里面去填数据,那首先呢,Order的数据。报端的数据往往都是从目标里面去取。对吧,哎,从这个结果表里面,从这里面有啥我取啥,那现在的好处呢,它不是一个分区表,你不需要判断是我取哪一个分区的数据,直接全表扫描对吧,全表数据全要select from,然后外条件。问一下Y条件DT等于2020杠零三杠1033也说这样呢,就把这个历史数据取出来了,那接下来呢,你要取今天的数据,那今天的数据呢,都在这个DW UV d count,它表示的就是按天统计的这种快照表。
02:18
是吧,好,拿过来,That先from电表,然后where,条件DT等于2020杠零三杠幺零。对吧?哎,也就是说旧的数据取出来,新的数据也取出来,它们两个呢,进行一个相应的关联,那关联的话,那就是old第2O里面有谁呢?设备ID按设备ID进行一个关联。ID,然后等于新的第二设备ID。
03:00
对呀,没有分区表啊,我这里没见分区啊。啊,他这里面啊,他没有啊,他没有啊对他没有分区,下面这有分区啊,下面这个是按天的一个分区对吧?啊下面是分区表啊,啊没毛病啊不错。旧表不准表啊,对着呢啊对着呢啊,看来这个眼睛挺好使啊,写习惯了啊,确实要看啊,要看一下啊,它是不是分级表,那这个呢,是分级表要要写对吧?啊没毛病哈啊没毛病,挺好,看来大家还在线啊,至少还跟着走呢,行,那现在呢,这个基本结构是不是已经写差不多了啊,你说上下的这块已经拼接在一起,剩下呢,就是补齐这个上面的一个字段啊,我希望大家呢,要养成这种良好的这个习惯啊。哎,补第一个啊,补第一个,然后下面呢,下面这些字段呢,这个太多了啊,我就不一个一个手敲了啊,拿过来找一下。当然你自己想练一下也可以啊。那意义不大啊,没啥意义。
04:02
对吧,这么一堆这么一堆,呃,咱们现在呢,换成的叫NVL啊,以前呢,你要不习惯这个NVL呢,你可以怎么配if啊,对不对啊if if新的这个设备ID如果为空。啊,那我取O的啊,如果不为空,那我取新的,这个跟这个NVL是一样的,我前面说我提前给大家普及了一下这个NVL的一个使用方法啊,比如说第一个表达式如果为空,那我取第二个达式,如果不为空,我取第一个表达式啊是一样的道理哈,这块呢,看你个人的一个习惯了。看起来现在能能能省一点,如果你用if的话,那这个得得干到这对吧,这条线得干到这相当于长一些,那你用这个NVL呢,一个函数呢,这个看起来更简单一些,两个参数嘛,嗯了。啊,这块好,那往下走吧,往下走,下面遇到这说首次活跃的时间。
05:01
啊,手势活跃,那像这种可以看一下啊,这张图能不能截过来。截张图啊。哎呀。QQ这个。嗯。好了,这回我就要的是这张图啊,要的这张图啊,费了半天劲就把这张图拿过来,这样呢,看起来那个舒服一些啊。啊啊,现在这张图有了啊,有这张图啊啊,这个写这个circle的时候啊,啊,你像我写的时候,我也是按照这个circle这个图去写啊,否则的话你记记它啊,这个不好记啊,不好记,来吧,看这张图啊来我们来写一下,首先呢,第一次是手势活跃,手势活跃。
06:10
那就if if那首先呢是。如果是手势活跃的话,那就。设备ID呗。实时ID吧,啊,如果首势活跃的话,六点。他吧,他的时间啊,或说这个登录时间如果是一直,那如果他是那的话,我会娶谁呀。走势活跃的时间怎么写?如果它不等于到的话,我是不是要取这个当前这个日期啊,啊当前日期那就是2020年杠零三杠幺零,也就是说只要我这里面它这个时间。
07:03
它不为。呃,它是闹闹,你看啊,如果它是不等于空的话,那我取今天的。走势活跃时间不对不对不对不对,对,我看一下这逻辑啊。呃,如果是old,对,得看old的设备ID哈。对,这个得看的哈。得看我的啊,得看这块儿,看他这里面,如果他这个设备ID等于空。这如果设备ID它这里面等于空,那我取谁呢?我取今天的这个啊日期啊,今天日期。然后否则的话。我取高的,比如说之间他曾经登录过,那登录过的话,那我就得取之前的了啊这样的一个值,哈比就说这呢是获取这个要小一点啊,都能不能看清啊,这呢是如果他曾经。
08:04
这块没有登录过,它是now。那我取今天的,那或者呢,就是。就是以前的日期,如果他曾经登录过,那你原来是什么日期就是什么日期,比如说这块呢,我不允许,尤其这块我不允许对它进行一个覆盖。啊,不允许进行一个覆盖哈,好,那再往下下面呢,是这个末次活动时间,末次活动时间,末测活动时间呢,就是今天这里面的时间,对吧?啊这里面时间,那这里面的时间怎么做呢?If判断那就是new的ID。不等于空。拗点,我这里面是用之前按的new,不露眼。对,用的ID不等于空。嗯,New的ID。他is,那那那我取谁如果说。
09:08
是吗?这个不是吧,我看。Not新的里面如果是not的话,新的里面是not,那我就新的嘛,这个是最后一次嘛,对吧,这个是的是最后一次最新的。你捋一下这逻辑哈。上面的两行可能错了。我看看上面两个。这两行吗?这两行没错吧,我先往下走啊,先往下走。NV。是这个值是吧,我看啊,我捋一下逻辑,如果它为的为空的话。有新的取新的,有机的,这没错啊,ML倒数第二行。
10:04
N到了电这没有吧。我们先往下讲啊,先往下讲,先把这个这几个搞定了啊,ML倒数第二行,这这没问题啊,这不这一列不都是new吗?这一列都是O吗?对吧,都是啊。倒数第二行C行吗?这都是用的OLDOLD如果说它是。浪。他他哦,拼写错误是吧,啊,这应该是拼写错误啊。眼睛挺尖的,这是拼写处啊,我看啊,那我是对拼写处啊,确实啊,这是一个拼写处啊,这是一个经纬度的一个拼写处,那是笔记上是不是就错了。啊,这块。对吧,啊,这是一个笔误啊,算是一个笔误啊。这个跟我们下面这个核心逻辑它不发生冲突,行,那如果说那再回到这个逻辑啊,不知道这个大家这个思路有没有这个,嗯,散哈,下面呢,是如果说这个新的这个登录。
11:07
啊,现在这个最后一次登录,它是not now not now的话,就相当于这里面不是空,不是空的话,如果你要想取末世活跃的时间。末世活跃的时间得取谁呀?取当前这一天,那当前这一天是多少呢?2020杠零三杠幺零。捋一下。哎,末世。记住,末次取最新的。首次去救的。去判断末是取最新的,首次取旧的啊,那如果新的它不等于now取它,否则的话呢,哎,否则的话呢,你就用用老的呗,那就是old的点。他。这样不就搞定了吗?然后这块呢,别忘了加分号啊,这里面容易出错的是加分号。
12:01
是不是你们看不太清了?这样一点啊,核心逻辑在这面行,那这个呢,是这个首次活跃时间和末次活跃时间的一个处理,那下面呢,是当日活跃的次数。当日活跃的次数,If,那我既然处理的是当日,那当日指的肯定是今天呢啊。六那活跃次数,活跃次数里面,这里面有最后一位叫活跃次数叫。拿来。对吧,哎,Log count,那如果这个log count。看这里面是判空吧。诶。啊啊count count值或者大于零,这是新的设备啊。前面这块这个标记应该在前面啊,如果这个log。烙个印哦,把他。
13:03
它is not,那它的含义什么呢?它的含义是如果你新的设备ID不为空,那就说明今天他登录过,只要他今天登录过,那我就取出来今天的登录次数,否则的话。这块给零啊,否则的话这块给零。对吧,你说今天你都没登录过,那你还统计什么今天当日次数啊,今天你压根就没登录过,那直接就是零了。嗯,是这个意思哈,OK,再放大一点,那这样最后呢,是这个累积活跃的天数,那累积活跃的天数呢,你需要取出旧的天数和新的活跃天数。那怎么办呢?NVL啊判断。那旧的天数。如果它不为空。他。
14:00
O点它。对吧,如果它不为空,我就取它的值,如果为空的话,取零啊,为空补零啊,就相当于是取出来你这里面已有的所有的曾经的登录天数啊,这是天数啊登录天数。那再往后他要加上NVL加上新的。加上新的这个NL好像不太好判断,可以加上一个if u判断啊,又判断判断什么呢?New。右里面点有一个登录登录次数吧,这有一个登录次数它。如果这个登录次数它大于零,取谁呢?去一。L呢取零就是相当于这块是一个翻译哈,把你的登录次数转换成什么呢?转换成对应的天数天数,那你这个光if这么判断好像还是不行吧,我看看啊。
15:07
嗯,If大于零啊,没问题,把它进行一个拼接啊,拼接在一起了啊,也就是说老的登录天数和新的登录天数,新的天数呢,只能是一或者是零啊OK,搞定搞定之后再捋一下,看这个逻辑有没有问题,嗯,应该是没问题,我们执行一下啊,执行一下这个对应的出口。设备主题,OK。搞定之后,那再来下面这个呢,用我们写这个看看行不行啊。没有坑。说not found,这个设备ID found啊,说没分啊。没分组吧?
16:02
分组了。老眼啊,看看啊。嗯,列的话是设备ID。Not found in modern v。哦,没指定名称吧,是不是啊,设备名称应该没指定这一块,他他懵了是吧,他懵了,不知道是这个是哪一个的设备ID啊设备ID那随便给他一个就行了吧。哎,我这个是不是应该特殊处理一下。拿这个处理啊处理一下。这个ID他懵了啊,因为这个old表里面和new的这个ID这个表里面都有,都有这个东西啊。啊,对,这个是复杂银行。负号的招引啊,当然是负招引也行,那他刚才呢,报了一个错误呢,是因为这个啊,你们以后也要注意哈,你说一个同一个字段呢,它在两张表里面,呃,都是相同的名称,那你需要这个指定一下。
17:01
多了一行设备ID啊,多了一行是吧?啊,那是刚才粘的时候多了一行,那现在呢,我们再来试一下。写Q就是一个不断的调试过程,诶,又错了啊。呃,Log in last这个字段没有。Last。哦哦,这张表里面它是没有这个log。Last的啊,它是没有的,这张表是没有,确实没有。你说这块这个逻辑不对啊,这块这个逻辑不对,我看一下。这块这个逻辑呢,得换一下,得换成这个设备ID。就是说判断它是否为空这块呢,再换一下。新表里面,因为它是什么表啊,它是一个,呃,它是DWS层UV detail,它是不存在你一个目标表里的这个字段的啊,所以说这块呢,要换成这个对应的c PID new里面law count。
18:06
这回应该没问题了,再试一下啊。一会儿呢,稍微回顾一下,这块有点乱。就行了,新旧表啊。要查一下结果啊,测试完之后呢,一定要查一下结果,看看有没有。哎,这一查呢,发现了这个对应的这个数据啊,应该是没有任何问题,那没有问题的话,我们稍微再回顾一下这个啊,写这个circle的一个过程啊,那相对来说第一次写这种circle呢?啊,这个呃,会绕一下,但是写习惯了之后就好了,那写这个代码的过程还是行成套,第一步先把你的目标表往这一放,之后呢,数据哪来的往这一放,下面开始写这个,写这个呢,先写什么呢?先写它的大框,先把这个insert right往哪里面插定义好,然后判断一下这块是不是分区表啊,一发现不是分区,那没有DT。
19:25
好,再往下,中间这块先不着急写它啊,中间这块不着急写,先把这个select写出来,然后from from谁呢?From你的数据哪来。啊,哪来哪来的话呢,像这种累积型的表,记住是累积型的表的话,都要是有old有new去处理,那old的话就找出历史的数据。找出你的历史数据,那下面这个这个new呢,是你今天新增加的数据,新增数据。那这两块都给它找出来历史数据,新增加的数据,然后对他们进行一个噪音造音的话,我们这里的处理呢,都是负二的噪音,一定要注意是负二的噪音。
20:07
哎,这个全部关联上,好,然后这是关联条件,就说这块呢,其实问题不大,不大的话,但是这张图要在你的脑海当中形成相应的一个印象就OK。那再往上。像上面这一块,前面这些呢,都是公共字段。公共字段的话,那这个没啥毛病,就是NYL判断,你可以用AYL,也可以用if啊去判断它是否为空,那我选新的还是新还是旧的,那这个原则就是有新的用新的,没有新的用旧的,就这么个原则,那再往下呢,是下面这一块。哎,下面这块呢,稍微讲的时候有点乱一下,呃,这块呢,是这个活跃首次活跃,首次活跃呢,这里面判断的就是我先拿这个O列表里面看他曾经是否活跃过。判断他曾经是否活跃过,那就是拿这个old,它如果是now的话,就是曾经他没有活跃过,那在本次里面我给它变成活跃。
21:07
否则的话就取以前的,哎,只要他曾经登录过,这里面有值,那选他的呗,选他以前的啊就可以了哈,好,再之后呢,是末次活跃次数,就是最近这一次。那通常我们是指今天,今天他有没有活跃过,那我就判断一下你这个新的设备ID里面它是否为空。那不为空的话,那就说明他今天活跃了。对吧,今天是3月10号,那今天的活跃了,那我就把这个时间变成今天,否则的话,那就是你以前你上次对吧?啊,上次你是哪天活跃的,那就是哪天活跃的。是这样的一个含义哈,那再往下呢,是当日累计次数。当日累计次数,那当日累计次数,那统计的是今天呢?当日就是今天,那今天的话,那就是看你有没有在这里面活跃,那怎么判断呢?还是判断它的设备ID是否为空,那不为空,那就说明它活跃了。
22:05
啊,活跃了,那活跃的次数呢,那这个new代表里面它是有这个一个字段的,就是专门用来记录它活跃的次数。对吧,啊,然后否则的话就是零,再往下累积活跃的天数,累积活跃的天数呢,要记住它有两部分值组成,一部分的值呢是O的数据,一部分值的是新的数据。这两部分数据要增加,加在一起,那加一起的原则是什么呢?O的数据很简单,你以前只要不为空,我就把你以前的数据加在一起。你要为空的话,那就天零。哎,就加零。那主要是今天的数据,那今天的这个活跃天数怎么算呢?只要你这个登录次数它大于零。就说明他今天活跃了,我不管你活跃多少次,我只算一天,你说它是涉及到一个单位的转换,将次数变成天数。啊,活跃就是一不活跃就是零啊,这就OK了啊,所以说其实并不是特别复杂啊,只是呢,这个呃,代码量稍微多一点啊,就是这样的一个过程啊行,那这块呢就OK了。
23:11
这是一张宽表,主题宽表。
我来说两句