00:00
但现在确实不难哈,来,我们来看一下这个最近连续三周活跃用户,咱们应该怎么去求。呃,前面咱们一再强调啊,你看啊,涉及到这种什么连续的了,对不对,你怎么怎么才能找出这种连续的用户,你是不是必须得把这个用户的历史活跃记录都给他拿到,你才能去找这个所谓的连续啊,对吧?我们DWT层的表,呃,他他我们也也强调过了,他他只有一个什么,只有一个累积的这样的一个结果,对不对,只有一个累积的结果,你是在里边找不到这个它的历史活动记录的。历史活动记录你是找不出来的,所以说你要算这种连续的指标的时候呢,我们仍然需要去从DWS层去拿我们想要的数据。需要去从DWS啊,那怎么能够把这个最近连续三周活跃用户给他找出来呢。其实这个大家想啊,我们想一个思路,首先你得明确什么样的用户是最近连续三周活跃的用户。那是不是就应该是在上上周活跃过,在上周活跃过,在本周也活跃过呀,对吧,也就说这里边有他,这里边有他,这里边也有他,那这样的用户就是最近连续三周活跃用户,那最简单的方式,大家应该能想到的是什么,我是不是可以写三个子查询,把上上周的查出来,上周的查出来,本周的查出来,然后让他们仨做一个什么,做一个inner,就是普通的inner inner inner join,普通的join。
01:26
那这样一来返回的结果是什么?In召返回结果是不是应该是在每个子查询里边都有的记录才会返回啊,对不对,那返回的是不是就正好就是我们想要的,诶,那些什么东西啊,正好就是我们想要的这个呃,三周连续活跃的设备啊,那就找到了最简单一种思路就是这样的,这个大家应该是能想到才对啊,这个能想到才对,然后咱文档上呢,思路跟这个不太一样,咱文档思路是另一方,我们来看看文档是什么思路,其实这个思路呢,可能大家也不是说一下就能想到,那这个思路呢,确实呃,它那个效率呢,要相对来说要高一些,咱们看文档是怎么做的啊。
02:02
来我们我先粘这个一部分的东西啊,给大家看一下。我把这部分先站出来啊。这个咱们就不再手敲了,因为这个呃,其实啊没有什么难度,但是这个代码量比较多啊,来我们来看一下,这边呢,我们先做了一件事呢,做点什么事呢?首先大家看一下这个位置能不能看懂这什么,这是我们本周活跃的设备。是从DWS层v detail,然后过滤日期呢,是把以本周这个周一周末日期作为它的过滤过滤时间,然后后边呢,我们对mid去的一个重。那这样一来就拿到了本周活跃的设备,那同理下边这个位置呢,拿到了上周活跃的设备。这是上周,那再往下呢,这是上上周,套路都一样,只不过就是时间你去改一下就行了,你就你就就完事了,呃,完了之后呢,那接下来咱们这边又做了一件什么事呢?又做了什么事呢?咱们把这些数据呢,把数据诶咱们给他给他进行了一个union。
03:02
给他进行了一个union union啊,那这个union完之后呢,我们就相当于什么,我们就相当于啊,把这个是不是三周的这种所有的活跃设备,我是不是都给它放在一起了呀,而且这个放在一起之后,是不是只有一列mid,只有一列,只有一列,那接下来咱们对他干了一件什么事呢?大家来往下看啊,接下来我们这么做的CTRLX,我们把它放到一个子查询里。CTRLV,呃,放到一个子查询之后呢,需要去起一个别名啊,比如说我这来一个T1吧,大家来看我们下边诶。这边儿那个。T。来括号来一个T1。好,那接下来干什么呢?接下来啊,我们以它作为一个子查询嘛,接下来我们对它进行分组,Group by对神分组呢,咱们现在是不是只有一个字段,只有mid,那肯定是对mid分组,那这样一来的话,大家来可以琢磨一件事啊,我们对它分组完之后呢,我们会把什么样的数据给他分到一起。
04:06
会把什么样的数据分到一起?完事之后,咱们是不是会把m mid相同的数据分到一组啊,对不对,大家可以琢磨琢磨,你说我m mid相同的数据分到一组之后,你说这每一组它诶都可能有几行数据,就是每一组可能有几行数据。每一组可能有几行?每一组是不是就有可能有三行?有可能有两行?还有可能是不是只有一行啊。对不对,只有可能有这样的三种情况。只有可能有这样的参数情况,那什么样的数,什么样的这个数据呢?我是这个它会有三行呢,什么样的mid,它那个分完组之后会有三行呢?是不是应该是在这个子查询里边你出现过一次,因为这里边我们去重了,也就说一个m mid是不是最多出现一次啊对吧,在这里出现过一次,在这里出现过一次,在这里也出现过一次,那这样一来是不是就是就说明你这个按照m mid分分案组之后,你就会有三条。
05:06
对吧,那如果说你在这个三个里边,任意两个里边出现过,那你分完组之后就两行,那只出现过一次,那就是一行。对不对,那所以说咱们只需要把什么样的这个数据找出来,那它就是三周连续活跃的了呢,什么样的找出来呀,只要我们把这样的。什么样的,就是说这个分完组之后,我那个诶count星等于三的找出来,那OK这样的设备就是我那个三周连续活跃的设备。那对它再进行最后一个count,那就完事了。那这就是我们这个文档上求这个三招连续活跃设备的这样的一个思路,就这个思路啊,对COUNT3,然后那个谢班同学说呢,说三个join更直接吧,哎,没错,三个John呢,确实在这呢,我们更容易理解,更容易理解对不对,但是你要知道这个John呢,其实在这个我们的have当中呢,是一个比较,呃,比较耗性能的,就是性能稍差的这样的一个操作,就这边呢,我们是不是可以不用join的呀,咱可以不用,咱们只用了一个这个,诶用了一个分组,诶是这样的啊,所以说这边呢,呃,这么续写的话,效率可能要高一些,要高一些啊。
06:13
好,那接下来咱们把这个呢,给它完善一下啊好,那它作为一个查学,那下边我们m mid了,那我们需要的数据是什么样的呢?我们需要数据是这样的,我们需要这个。Count星等于三,那这样一来我就把这些,诶count星等于三,也就是有三行的这些组是不是就给它过滤出来了呀,大家要注意,要注意什么呢?咱们这边having过滤的是什么?你过滤的是行吗?过滤的不是行,你过滤的是什么?它跟where不一样,我们having个过滤的什么?过滤是组对不对或者是组啊,也就是你现在把这个诶有有什么样的,有这个呃,三行数据的组就全部都过滤出来了,那过滤出来之后你需要干什么?你需要对它进行一个这个统计的,需要对进进行统计的啊,那OK,那接下来我们我们是就得这么去写了呀,来select,然后呢,From下边,那我现在问大家一下啊。
07:11
你说我现在,哎这么去统计,直接看星。这么写。你说我得到的这个count星,它是不是我这个我想要的那个结果,我想要结果是什么,是把这个mid是不是给他,就是把我们最终返回那m mid是不是就进行一个count呀,你说我这么写是不是我最终的那个count。可以来看一看这个色啊,你说我这么写对不对。是不是我想要的,如果说大家觉得这么写是OK的话,那扣一个一,如果觉得不OK,扣一个二。可以回答一下这个问题啊。这么写对不对?这个结果是不是我想要的那个最那个最近三周连续活跃的用户的数量。这么写对不对?大家可以想一想啊,这么写对不对?
08:03
Over。你说那个iner right呀,呃,咱不考虑那个查数据那个事啊,你就这么写对不对。这么写,我可以很负责的告诉大家,这么写是不对的。这么写是不对的啊,你这么写相当于你这个抗是什么,你这抗形啊,你其实选的是什么,选的是诶这个count形。也就是说你这个circle啊,你要是这么写的话,那你得到的结果应该是什么样的呢?你得到结果应该是这样的,它不是一行数据,它不是一个值,它应该是什么值呢?应该是好几个值,OK,它结果是什么样的呢?它会把这样,比如说m mid等于一,然后count其实等于三,诶这个三就出来了,那OK,我比如说那个m mid等于二了,我这个三也出来了。然后呢,M mid等于三的,那我的三抗芯也是等于三就出来了,因为你这是不是只选了一个抗芯啊,你选的抗应该实际上是谁,实际上只这个你选的是这一列,也就是说你这个这个select抗体完结果之后呢,你会得到一串的三。
09:06
你会得到一串的三。这是你在这儿这么写得到的结果?这是得到结果,那我们要做的应该是什么呢?我们要做的呀,实际上应该是把这个东西啊,是不是对他进行抗才对啊,所以说这边呢,你需要再嵌套一个子查询才对。这块得搞清楚啊,这块一定得搞清楚,因为我要是这么写,你可能就可能会更好理解一点啊,我要这么写呢,我写一个mid往这。Mid mid你可能你就明白了,你其实你这啊得到的是好几组的数据,MID132333,哎四三,这是mid,这是那个所谓的抗星。那我们要做的实际上还得对它再进行一个count,还得再进行count啊,那也就是咱现在呢,把这个count,其实咱们其实在这就不用选了,我们只要一个mid就够了,只要mid就够了,那接下来呢,咱们需要对它进行一个子查询,CTRLX来括号。大家这个对SQ的语法呀,还是不熟,这些东西都是这个,呃,大家去写S应该去注意到的这个小细节啊,可能大家对语法还是不熟,还是多练啊,还是多练,那我们这样呢,再起一个别名叫T2,那也是接下来呢,咱们从这个地方你再去select看一,这才对啊,Select下边我们来一个con。
10:22
CT,然后呢,来一个count形,这回你这个count芯,这才是我们最终想要的结果,好,那现在我们把这个,呃,上面那个建表语句拿一下,然后把其他需要的字段给它补充上啊,来,我们去拿一下啊。呃,建表语句在这啊,CTRLC。CTRLV,好,下面已经拿过来了,拿过来之后呢,看一下这里边的字段,首先第一个统计日期,这个不用多说了,对不对,那下边呢,这有一个week dt week dt,但这个week dt咱们前面也定义过了,这所谓的持续时间指的是什么呢?因为我们的需求是这样的,连续三周吧。对吧,所以持续时间我们是这么去定义的,我们用第一周的周一,然后下划线拼上第三周的周末。
11:06
这么去做它的持续时间啊,后边那个活跃次数就是这个所谓的count星,那前面俩字段呢,我就不在这个手敲了,咱们拿下文档上的吧,那也就是这边CTRLC。来拿到这个位置,CTRLVCRV,那我们把这个15号呢,统一的给它改成这个十号点,那这边也点一下。统一改成十号行,那现在咱们这个需求呢,就算是写完了就写完了啊,那当然前面再补充一个insert就行,来insert into。嗯。Table,然后后边呢,来一个呃,ADS continue count。这个就完事了啊,这区就写完了,好,我把这个视频先录一下啊。
我来说两句