00:00
好,那接下来呢,我们看第二个需求啊,跳出明细。我们要算一下这个跳出明细啊,那所谓的跳出,我们要计算跳出明细的话,我们必须要清楚什么叫跳出。对吧?呃,那在这块我们什么叫跳出呢?这个这个意思啊来看叫跳出,指的是用户成功访问网站一个页面后就退出了,不再继续访问其他的页面。啊,其他的页面,而跳出率呢,就是拿跳出的次数除以访问次数,对吧,这个之前我们说过,这是跳出率的做法,这是最后ADS层要关注的。对吧,好,那下面呢,说了跳出率有什么作用,对吧,那就看引流过来的顾客能否被吸引,其实还有一个需求也是这个作用,叫留存。对吧,这个跳出和留存都可以反映我们的这个跟客户的一个粘性啊,跟客户的一个粘性,对吧,那你想想看,就是我推广做的非常好。
01:08
新增用户特别多,留存率高,说明你这个产品做的很吸引人,不光新增高,留存也高,对吧,产品好,那如果跳出率很高呢。是不是我们要求跳出率低啊,那你看啊,他是访问了一个页面直接就出去了啊,通过某一个广告进来的,发现是什么狗屁网站对吧,直接就走了,那这个呢,跳出就多啊,那跳出率高不是好事啊,留存率高是好事,这两个指标应该能搞得清楚吧,对吧?所以你要知道一下所谓的跳出。所谓的跳出,指的是用户访问了一个页面之后,直接就出去了。啊,没有再做其他的页面的访问,那这个时候我们怎么来找到这一条数据呢?大家想一想,你有什么思路。
02:12
有什么思路。大家。啊,可以说一说在这个弹幕当中。把公平打在思路上好不好啊?来,大家把公平打到思路上。Last p.ID等等于那,并且该m mid就一个啊,Last by ID等于那的数据的下一条还是那就跳出。
03:00
呃,那假如说没有下一条呢。直接就用CP了,直接就用CP了吗。啊,你看到下面我们导这个CP的包了是吧?啊,就说CP啊。啊,如果没有下一条得搞个超时时间,得规定一下这个绘画的时间啊,其实这里边儿正常来说啊,那我们想。呃,如果说一次绘画,假如说我们有绘画ID,比方说啊,我们有绘画ID。那是不是按照绘画ID分组取出来它只有一条的那种数据啊?对吧?啊,那我们只要在一个绘画当中发现这个绘画只有一条数据是不是就好了。对吧,但是呢,没有绘画ID。没有绘画ID,那我们怎么办呢?
04:03
这个时候你想我们应该怎么办?当没有绘画ID的时候,我们就有什么思路了。哎,对了啊,钱总说对了,绘画窗口啊,其实这个地方呢,就是绘画窗口的典型应用。典型应用讲于绘画窗口,那你想想看,绘画窗口它指的什么意思啊?那你看我没有绘画ID,当我没有绘画ID的时候,那我怎么能确定这个数据是同一次绘画去访问的呢?
05:02
我如果确定,那这个时候绘画窗口就来了,其实大家要知道一下啊,在我们学习的弗林格当中,这几个窗口当中,所谓的这个绘画窗口就是在你想要根据绘画ID算某些指标,但是他没有绘画ID这个时候用的。对吧?没有绘画ID,那怎么办呢?我们只能根据时间,如果你两次访问时间过长,间隔时间过长,那不好意思,我认为你是一次新的绘画。对吧,我认为你是一次新的绘画,是这个意思,好,那我们就可以用绘画ID来做这个事情啊,不是绘画ID叫绘画窗口,对吧,我们可以规定十秒钟对吧,间隔时间with。十秒钟,如果说一条数据来了之后,十秒钟还没有数起来,那我认为它。
06:01
再来数据的话,是下一次绘画了,这中间有十秒钟的间隔时间对吧?好,那我们就刚才说了,只要绘画当中只有一条数据就好了,那我会画窗口一开,最后对窗口进行计算的时候,我们可以用全量窗口计算。对吧,用那个apply apply里边传的window function,对吧,这是一个全量窗口,当然你也可以用那个reduce agg做增量聚合,那这个全量聚合,那我们可以把这个数据条数取出来,如果说这个窗口当中只有一条数据,是不是我们的目标数据啊。对吧,我们可以用一个绘画窗口,因为没有绘画ID,我们整个数据当中没有绘画ID,我们只能根据时间来判断是否是一次绘画了。这个思路OK吗?
07:04
这个思路能行吗?可以吧,啊,那这个是其中的一种思路啊,但是这种思路呢,它会有一点小小的瑕疵,它的瑕疵是在于哪呢?你比方说啊,好,那你不是规定十秒钟吗?我A数据啊,第一条应该在这啊,A数据在这好,B数据呢在这好后面的C数据中间呢,间隔了十秒钟。间隔了十秒钟对吧?好,那有没有可能这两个呢?可能间隔了三秒钟对吧,这两次数据间隔三秒五秒,反正不到十秒,把它画到一个窗口里边了,呃,那有没有可能这种情况呢?这个A和B都是一次单跳。就是说A进来之后出去了,B进来之后也出去了。那如果说简单的按照这个什么。一条数据。按照一条数据。
08:01
是不是有瑕疵会造成丢数据啊,那本来这两条都可以都是对不对,但是呢,我们严格按照一条怎么样,这两条数据都不算了啊都不算了,那也就是说如果你要用会话窗口的时候,那这种情况呢啊,那就没办法避免了,就可能把这个数据呢弄丢了。对吧,弄丢了好,那这个时候我们还有另外一个方式,就是刚才有同学提到了CP,我们该用CP来做这个事情。对吧,那我们想啊,他绕一个跳出,哎,进来就出去,进来就出去,所以他没有上一跳,那上一跳怎么样。是不是上一跳为那。没有上一跳嘛,对吧,它是刚进来这个页面,所以UCB的时候,第一条数据我们是不是判断上一跳为空就好了。那关键在于第二条数据,我们怎么办?第二条数据怎么办呢?
09:04
第一条数据的逻辑好处理,第二条数据呢?我们写什么?思考一下啊。思考一下啊,第一条数据我们呢是last page等于呢。第二条数据我们应该写什么条件呢?对吧?CP对于多个事件我们都要写条件,肯定不是一个,至少得两个,如果只有单个事件,那我们就不用CD了,CD处理复杂事件,所以复杂事件就多个事件组合的叫复杂事件,对吧?呃,那第二条数据它的一个判断逻辑是什么?
10:01
想一想。把这个事情搞定了就可以了。嗯,没有人知道吗。第一个我们要上一条文档,那第二条数据呢,我们应该按照什么规则去匹配?啊,你看班长出来了,果然大家说的对啊,当大家沉默不言不语的时候,班长就来了,对吧?好,第二条还是什么?Now。啊,第二条数据我们还是要为nu的这种对吧,好,那如果匹配上了。说明第一条数据就是我们要的数据对不对。如果匹配上了,是不是说明这个数据就是我们要的,对吧?如果匹配不上呢?匹配不上说明第二条数据上一条它不等于呢,上一条不等于呢,说明第一条跟第二条是连续的访问,那刚好不匹配上,我们也就不要了。那家还有一个问题,当我们这个数据传过去之后,第一条数据匹配上了,但是第二条数据后面一条数据迟迟不来。
11:15
啊,他迟迟不来,那会怎么样呢?是不是永远都不会输出了,那有问题对吧,你一个绘画不可能说永久开着,所以在这边我们加一个VC,然后呢,十秒钟对吧,如果第一条数据来了,十秒钟没有数据来,不好意思也正常输出啊,那这个VC如果说他达到这个条件,它是不是一个超时事件。对吧,它是超时事件,它的超时事件呢,是放到测输出流的。对吧,所以最后呢,咱们根据这个条件来出发,那就要匹配上的第一条数据跟超时数据啊,我们要把它用起来,就是我们的最终结果数据了。
12:00
能不能理解刚才我所说的?不难理解吧,对吧,好,那这是我们的一个思路,接下来呢,我们就要写这个代码了啊好,这是思路分析。
我来说两句