00:00
来,那现在我们做第一个需求新增用户,来先把建表语句拿出来啊,建表语句咱们前面分析过了,是不是就两字段,一个是日期,一个是新增的设备的个数,对不对?那现在我问大家一下啊,问大家一下啊,你说我们现在啊,做这个需求啊,咱们应该从哪张表当中去查数据。啊,有同学可能因为咱们之前给大家提到过了,我们DWT层是不是有一个那个首次登录日期啊,对吧,大家肯定一下就反应过来了,用首次通知日期去求新增设备啊,这个因为提前已经跟大家说了,所以大家肯定能想到啊,但是假如说我没跟大家说,或者说他们没有DWT层的表啊,我只有什么呢?只有咱们这个历史的,只有咱们这个每天的这个登录记录。对不对,那你说也就是从DWD呗,啊DWD,那你说我应该如何去求咱们每天的新增设备呢。啊,如果没有DWT层的表。
01:00
啊,或者是没有什么首次登录日期这个字段啊,那咱们怎么去求啊,这个新增设备,每天的新增设备怎么求。啊,要没有DWT层表,那咱们是不是只能是DWD层啊,啊,那得找谁找启动日表啊,啊那这个思路应该是怎么样的呢?大家想想应该怎么求啊。应该怎么求?怎么去求这个新增啊,大家琢磨琢磨有没有思路。嗯,这你就你要把这个问题想明白之后呢,你会发现咱们有了宽表啊,你看这种需求我们做起来确实比较省事了,对不对啊,你看是没有这宽面,你就不知道咋求了,是不是啊,大家说一下啊,要真是没有这个宽表的话,怎么求这个新增设备啊,怎么求啊。
02:01
你可以呃,方案很多,比如说第一种我把这个什么呀,把咱们那个DWD层的启动日表的数据,我是不是得全查出来呀,对不对,全查出来干啥?出来之后对设备ID进行分组,然后呢,咱们是可以求一个最小的登录日期。是不是啊,求一个最小登录日期,最小登录日期是不是就是它的首次登录日期,首次登录日期如果等于今天,那是不是就是今天的新增,没错吧?哎,这样就可以,或者还可以怎么做呢?你可以这样做,那DWD层我们那个启动日表是不是分区了呀,对吧?我们可以把冬天的分区的数据拿出来作为一个自杀群,然后呢,把前边的就是除了当天这个分区啊,其余的所有分区也拿出来,也作为一个自查群,那它俩对应关系应该是哪种,是不是应该是这种?对不对,是不是有重合的,也有各自独有的,对不对,那我们要找新增哪部分就是新增。
03:00
这是不是就新增对不对,说这样是不是也能求出来呀,那当然你要想找这一部分,你应该怎么写呀,比如这是old的,这是new。啊,应该用哪种招的方式啊。Left run left run返回是这部分吧,正好把那个新增给丢了啊,用inner down呢啊也也不对啊,用谁呀,Right run对不对,Right数返回是这部分,当然了,我们还得过滤一下,过滤什么呀,过滤O的为no的是不是就咱们新增的呀,没错吧,啊,因这种方式也能求出来咱们这个新增的是这样的啊,那当然呢,你求出来之后得需要去考虑这个驱重的问题,对吧?因为你拿的是启动日志,你要拿启动日志的话,那你得干啥?是不是得考虑到一个设备一天登录多次啊,对吧?啊,我们这求的是设备数啊,所以说你得记得驱重。啊,这是咱们没有宽表的话,怎么去求这个新增啊,那显然这种方式呢,这个效率太低了,每天都要把DWD层全部的数据查出来,对吧,那你去求个新能,这个效率太低了,那所以说那咱们现在有了宽表呢,相对就比较方便了啊,那这个serve怎么写,直接select啊,From d WD层DWT层的啊UV topic,咱们直接使用谁呀?啊,直接使用那个谁就可以了。
04:16
首次登日期去判断就行,对吧,那咱们这一个首次登日期,但可以怎么求啊。啊,我可以用外过滤条件先过滤出来,然然后再进行count对不对,也可以怎么做。也可以直接吧。对不对,Some if,嗯,Some if,谁log in date first,那等于这个2020。杠零结零六杠呃幺四呃,如果等于我就记一否定记零,那你得到是不是就是14号的新增对不对,那这个结果是不是就完事了,就出来了啊,那我问一下大家啊,那你说对于咱们这个需求来说啊,你说我是使用some if这种方式好,还是使用那个就直接写外过滤条件啊,然后呢,进行count好啊,哪种哪种方式更好一些呀。
05:05
是不位更好一些啊,为啥呀,因为咱们这是不是只需要求一个需求,对不只只有一个值,只有一个值,那如果说你用外尔过滤条件的话呢,那相当于你会怎么做呀,你会是不是先过滤掉一大部分的数据啊,那如果说你用刚才那some if是不是每条数据都得去判断一下啊,If怎么怎么样,If是不每条都得变过滤过滤一下呀,那个相对来说呢,要呃要性能要差一些,所以这儿呢,不如直接count星啊,那就贼light from这张表,然后呢,咱们的外过滤条件就是logate first等于这个当天日期,然后看芯就行,上面当然我们还需要一个新增日期,对吧,新增日期咱们还是以同样的方式给它写在这就行啊,直接写死2020杠零六杠幺四,那当然这后期呢,咱们得换成到时候date啊行这个S就搞定了啊,这最终呢,需要把这个呢给它插入到啊这张表当中,当然插入的话呢,我们需要考虑到这个任务的重复执行,以及这个小文件的问题,咱怎么办,是不是还得给它套上一个这样的帽子啊,啊其实跟它是一样的,那咱们这儿呢。
06:05
就不再呃一点一点套了,咱们知道这个circle怎么写就行啊,这是咱们这个新增啊,好,那我把视频录一下。
我来说两句