00:00
好,那接下来呢,我们先看一下这个每日设备行为啊,这里面主要是这个设备启动的时候,它记录的一些状态啊,这里面呃,它并没有登录呢,我们只是按设备ID进行一个统计。那设备ID的话来看一下。行,我们未来啊,要向这个DW UV detail对抗,对抗的含义呢,就是按这个日哈,按日每天的一个统计吧,对抗的啊,这也是一个命名的一个规范,后后缀呢,是这个相当于是一个力度,是按天聚合的,还是按这个事情发生到这个目前这一个状态啊,这是力度不太一样的哈,行,那是用户活跃,那前面这些状态。不知道大家还有没有印象啊,这是不是就是启动日志?启动日志的公共字段的,启动日志所有的公共字段,你稍微回忆一下渠道版本,手机型号,品牌版本号,屏幕宽高,网络经纬度对吧?啊经纬度这里面唯一在前面的基础上。
01:15
加了一个字段,叫活跃。啊,活跃次数也是这张表呢,其实是用户行为嘛,哎,他活跃了多少次。相当于是一个度量值啊,加上一个度量值行那一会儿呢,那就这个怎么来处理是吧,那怎么来处理,同时呢,它是一个分区表存储呢,是按照列式存储,列存储宽表这块啊,正常情况下很少去再压缩了,记住啊,宽表的时候很少再压缩了,为什么呢?宽表呢是经常的被使用。经常被使用,那这样的话呢,呃,压缩带来的好处呢,是减少磁盘空间。减少释放空间,但是呢,带来的坏处是什么呢?你每次计算的时候,它多耗费CPU资源,你需要先解压,然后再计算,计算完之后再压缩回去,那这个过程呢,是浪费CPU资源的。
02:08
增加了这个计算的压力,你虽然减少了存储的压力,但是你增加了计算的压力,所以往往呢,计算密集型呢,我们一般就不采用压缩,只有这种IO密集型就正常的一个传输不需要解压,那我们才会采用这种压缩方式,哈,好,那怎么来处理这个数据呢?往这里面灌数据呢。你这是DWS层,那我数据肯定来源于DWD层starlock,而且DWD层starlock它能把你前面这些全部覆盖。那怎么覆盖的呢?哎,Insert right table这张表里面插入数据。然后select设备ID,按照设备ID进行来处理。因为我这个每日设备行为,它统计的就是这一个设备这一天当中干了什么什么事。那他统计这一天都干了什么什么事,他这一天啊,他可能干了N多条事。
03:06
它可能启动了多次对吧,那也就是说有多行数据,你启动一次就有一行数据啊。那我就需要把这多行数据进行汇集成一行,那多行汇集成一行。咱们上次课讲的时候讲过用到了哪一个呢?Collect set,它是可以帮我们把多行汇成一行的。是吧,啊,多行汇成一行的行,那他可以帮我们干这件事儿,那这里面我们是按照设备ID进行把多行汇成一行,那你这块呢,就要加上一个分组,按照设备ID进行分组。分子之后,后续的这里面的事儿怎么来做?啊,这里面怎么做,首先设备ID,那我肯定按照设备ID这个都要有,没问题,但是下面这些理论上来说,这些跟我没关系,有同学说我直接把这个字段往这一放不行吗。
04:01
如果你直接放一个字段的话不行,为什么不行?入BY里面,如果你用的是格入BY分组,那上面这里面只可以用三种数据的类型。不知道大家记不记得啊。就这里面只可以数据。哎,只可以放三类数据。常量可以。啊,常量可以,还有呢,是聚合函数。函数什么萨。啊,什么这个,呃,Average平均值。对吧,啊,平均值还有一种就是要么你就把它放到你这个分组里面,你把这个制造放到分组里面,它才能够正常使用。你可以放这个名称,否则的话都不能啊,都不能,也就是说你只要要采用分组的话,你要么就把这个字段放在这个分组里面。
05:01
要么这里面就放常量,还有一种方式,你可以放聚会函数。啊,这么三类哈,啊,那后面这段行,这这行代码不知道大家能不能看懂啊,能不能看懂它其实呢,首先呢,是对这个优质ID进行了一个聚合。相当于这个设备ID对应的多条数据的用户ID。变成了一行。放在一起,放在一个什么呢?类似一个组里,类似一个组。数组里面,然后它前面这个含义什么意思呢?把你的数组里的值取出来,按照中间这个竖线进行一个拼接,保留在一起。啊,拼接保留在一起,那当然这块其实你不这么处理,其实也还好啊,你说你不拼接在一起也行,拼接在一起的好处呢,就是把你这里面所有的这个信息,你说你每每行的信息我都给你记录下来了。方便我日后啊,对数据再进行处理,之后再处理的是什么办,我直接再拿这个数线把你给它截取出来。
06:03
竖线一分割,诶。那这两个值取出来,我可以进行。日后的一个使用,也就说在大数据场景下,数据呢,我们尽量不丢失,尽量给它保存下来。啊,是这样的一个含义啊,如果你这个粗暴一点的话,只取一个值,只取这里面的一个值没问题,比如说我这里面就这不是数组吗?数取个数组零。是可以的哈,是可以的,没问题的。啊,但是呢,在大数据场景下,能不删数据就不删数据,能保留的就保留啊,所以说把它保留下来,用这个竖线把它拼在一起之后呢,还有一个点呢,就是活跃次数。啊,活跃次数,活跃次数其实就是这里面你这个设备ID。对吧,啊,有多少个设备ID,那count一下自己不就完了吗?你分完组之后,这个去完重了,相当于去重,你有多少个,这里面多少个六个,那就六呗。啊,这是六啊,活跃了六次啊,是这样的一个含义哈,就对分组里的,对设备ID相同的分组的,看他一下你活了多少次,每一个设备ID回多少次啊行,那这是这个值,我们稍微来写一下哈,稍微来写一下啊。
07:17
把它拿过来。还是老的套路啊,希望大家养成这个习惯,左侧呢,放这个最终我们目标的要往里面插入的数据,好,那接下来呢,就是这里的数据哪来对吧,这是DWS,我们需要去DWD里面去取。DWD的哪张表啊,啊,是哪张表啊。DWD的starlo啊。去这边领取。Start。DWD,把这张表拿过来。
08:01
这没用啊。行,也就是说原始数据在这呢,目标地址在这呢?那下面开始写右侧的逻辑。那开始写吧,一色的。Over right2题可吧,向这张表里面插入数据。小一点啊,然后p partan dt等于2020杠零三杠幺零好s select from,数据哪来数据完全从这张表里面来,对吧?啊从张表来好拿过来。那来源于这张表的哪一天,你这里面是往3月10号里面插,那我的数据肯定也是来源于3月10号DT2020杠零三杠1030号,那下面呢,要考虑一下要不要分组。
09:12
啊,要不要分组,因为我这里面统计的都是按照这个设备ID进行统计的,而且设备ID呢,有可能启动多次,你说每天这里面有多条,启动有多条,那你必须要把这个多条的这个相同的设备ID的数据聚合到一起,Goodbye。是吧,按照它进行一个聚合,那按照它聚合的话,那你上面首先第一个字就是它的失败率。说白我说过,只要你下面这是分组的话,那上面这块。它能写的只有三类啊,记住哈,一定要记住这些事啊,只有三类,一类呢是你把这个字段放在这个分组里面,那另一类呢,还有就是常量,常量值,比如说这里面写上2020年0310往这放,这没问题,或者写个一二也没问题,那另一个呢,就是这个聚函数。
10:08
虚函数。啊,分组这么三类啊好,掌握到这个原则之后,那下面往下往下看,那下一个呢,是要识别这个优质ID,如果优质ID你往这一放,妥妥的报错,因为你要往这放的话,你就需要在这里面。对进行一个分组啊行,这是聚合聚可以。C我把这拿过来啊。这里面用到了是set。
11:04
拿来一个。分析一下。他是这样来处理的啊。啊,首先呢,你可以把它包掉。如果是这样的话,你可以取个什么呢?哎,这样去取,因为它的返回值啊,它是一个数组,那数组这个我不知道大家有没有印象啊,来看一下client塞,嗯,Client side,你看出来的是组。啊,是15的数组的样子啊,数组的样子,那你取零的话,肯定是能取出来第一个值的,但是呢,如果你取零的话,这个值它就没了。啊,这个这个值,这个北京就没了,它就会被干掉,那你取多少呢?那这里面我们是把这里面所有的值取出来,取出来之后呢,用这个中线进行一个拼接,比如说我们最终形成的效果,如果是这种值的话,就是。
12:02
哎,变成他,那日后我们再想对这个数据进行操作的时候,我们可以用竖线,哎,把它切割出来,取出上海,取出北京。哎,方便我们后续的一个处理,诶说这个Chinese的都在哪个地区,这个上过课呀,啊上课啊,上海北京都有。啊,如果你只取零的话,那这只剩下上海了,那这个数据呢,就相当于缺失了。啊,确实了哈,好,那这块呢,就是我们不战而取啊,把它干掉,那你呢可以。UN蓝色,然后呢,你这里面啊,加上你想要的这个拼接符出现,当然你可以用别的哈,等于别的这样的一个操作,那就将这里面所有的元素取出来,用这个中线。拼接在一起形成一行聚合函数啊函数,那后续的这些呢,也都一样啊,我把它粘过来。
13:04
然后后续这些哈,这些都是一样的,一直到这儿到这儿哈,差一个。这一个。好,那你说中间这一块其实没有什么难度,就是一个体力活,把这些所有的字段拼接在一起啊,拼在一起,那拼在一起呢,后面呢,还差一个,还差一个谁呢,还差一个这个活跃次数。啊,活跃次数,那其实就是你这个分组里面每一个设备它活跃多少次,那简单呢,一涉及到什么什么次数就count听就行了。啊,那我们这个呢,是这个次数名称。叫。啊,把这个名称一给结束。看一下这整体。啊,整体也就说这里面的步骤呢,是你目标例子要往哪哪里面插写好,写好之后呢,下面呢,就是select from from哪里呢,DWD层那D异常时间啊就是外条件,它是3月10号,我就是3月10号之后按照什么进行分组。
14:09
我们是按照设备ID进行分组驱虫。啊,分系统把多行合并成一行。那这里面日后啊,有一些这个产品经理会给你们提出更高的一个要求。啊,更高一层,他会统计什么呢?他他会统计说呃,什么手机型号,他会统计华为手机型号。设备的启动情况。那这块怎么办?我让你统计华为手机品牌它的设备情况。怎么办?简单吗?华为是哪一个?是mobile mobile?品牌这。华为品牌,那你怎么办?只需把它干掉,然后把它放在分组里面就行了。那再来,如果我想让你统计,呃,这个华为手机品牌的。
15:05
嗯,什么渠道呢,我看啊什么地区,对加个地区在上海地区。或者在某在每一个地区,它的一个分布情况在上,嗯,这是啊,在什么区域,华为手机品牌。他的一个销售情况,他的一个活跃情况,那你就需要再把。再往里面放,也就这样的话,以此类推啊,你说这块呢,用起来是比较灵活的啊,推回来,现在呢,我们只是放了一个设备ID,那你就往这一放,如果要想统计在关联上的一些其他需求,把它们去掉。就直接拿来了,那行吧,那下面呢,我们来执行一下这个效果哈。见表。OK,然后呢,里面插入数据。
16:02
看一看我们写这个有没有问题啊。嗯,一变成啊,应该没有啥问题啊,挺好。这个。敲完三遍之后啊,你就觉得这个非常简单。等它运行啊,它运行完之后呢,我们来查一下结果,看有没有数据。查一下from这张表,Where dt 3月10号。
17:11
看下结果。哎,这样呢,3月10号的数据啊,我们就都拿到了哈,都拿到了,你看这里面他将什么版本号,相同版本号是不是都拼在一起了,然后呢,这个是邮箱号拼在一起,拼在一起只有这个设备ID,前面这个设备ID它应该没拼在一起,你看有的数据都拼在一起了吗。就达到这种效果以后呢,你看这个是AC三星啊,后续呢,我想取哪一个值给它切割开呀,来切割开不就行了吗?嗯,诶这就是这个好处哈,宽表。
我来说两句