00:01
好,我们来接着说啊呃,那现在我们这个数据呢,也能够消费到了,那消费到以后呢,接下来的操作呢,就是。去重操作。啊,接下来就是什么做这个驱动操作。呃,这个驱虫怎么实现呢?那你就要先分析明白,现在我们数据它是什么样的一个情况。对吧,就最起码你得先想明白哈,呃,我们要去统计这个日活的时候,我是拿你的页面访问来去统计的,那你就先想明白,我的每一个用户当天在你的平台中做的访问,你最后采集到的数据是什么样子的,你现在把这个事情搞明白。能听懂吧,如果说你的这个事情能够想明白的话,那就很简单了,来我们分析一下啊,首先啊,现在我们能够明确的是我们的一个用户对吧,一个用户我们每一天可能会访问你的平台N多次。
01:06
对吧,比如说早上八点钟我访问了一次,中午12点我访问一次,晚上这个,呃,晚上这个18点钟我又访问了一次。是不是我一天我可能会访问多次?就是我多次会登录到你的这个平台中。OK,那我登录进来以后呢,而且我在我的每一次访问中,我可能会跳转很多个页面,比如说我先来到你的首页了,对吧,又来到什么,又来到你的这个叫什么详情页了,对吧,大哥说的啊,然后呢,什么订单页了,对吧,什么什么支付页了。就说白了,我一天会有多次访问,那我的每一次访问呢,我又会访问很多个页面。对吧,那现在我们想要的效果是你要把这个多次访问。以及什么呀,每一次访问的N多个页面,我们整体做一个去中操作,最后呢,我只要得到个一就行了,因为其实对于我的日活统计来讲,你这一个人你一天访问过800次或者900次,我最后统计的就是个一,因为你的活跃用户就这么一个。
02:09
别看你访问了这么多次。你就这么一个人。对吧,首先呢,就是什么N变一的一个过程啊,怎么把N变成一。那你就要去做驱虫了。理解吧,好,来这个怎么驱虫呢?大家想想啊,我们给大家画了一个图啊,大家可以跟着我这个图去分析分析啊,来找到我们的这个驱虫,好呃,那我这个驱虫的话呢,大家看看啊,我们画了一个图啊,大家可以跟踪一下看。这个先放到这儿不要了啊。藏起来。呃,是这样的啊,我们假设啊,我们的m mid1001,这什么意思呢,这个是你驱虫的时候。对吧,或者说呢,这个是你是怎么标识,你是一个人的,或者什么一个用户的,你在统计日活的时候,你是拿什么去统计的啊,那我给大家去说一下,呃,一般情况下有两种,一种是你的用户的IDID,一种是你的设备ID叫ID。
03:10
理解吧,啊,那有的呢,是拿这个UID统计的,有的是拿这个mi统计的。就是你的页面访问中啊,会包含你的UID,会包含你的mid,就是你是哪个设备,或者你是哪个用户,但有一种情况是这样子的,就是呃,有些人他这个登录上来以后,他呃有些人他这个访问平台的时候,他不是一个登录的状态,如果说你不是一个登录状态的话,其实我是拿不到你的UID的。就是我明知道有个人访问了,但是我不知道这个人是谁。对吧,那这种情况你想想啊,我在统计日活的时候,其实这个人我我应该也要把它统计进去的。虽然说我不知道你是谁,但是呢,我起码知道有个人对不对?我们统计入口不就是有个人就行了吗?对吧,哎,有个人格就可以了啊好,那么这种情况下我就可以拿你的设备ID了,因为你不登录的情况下,你的设备ID你肯定是固定的呀,肯定是唯一的呀。
04:00
比如说你的手机,你的手机肯定会有一个什么唯一的一个什么设备ID。理解吧,我可以什么拿你的设备ID来去统计啊,所以说这个地方你到底是拿这个UID还是拿这个设备ID,你们自己去衡量啊,每个公司都不一样啊,那假设我们是拿这个UI,拿这个M,然后呢进行这个统计的啊,那我就假设我mid为1001的。啊,这个人吧,啊,或者什么或者这个设备啊,只要你是拿这个设备去访问的,我都认为你是一个人听到了吧,啊就哪怕说这个。我拿这个设备访问过,对不对啊,我媳妇拿这个设备访问过。对吧,我的什么家人拿这个设备访问过,那对于平台来讲,它是识别不出来你到底是谁的,我只能识别出来你就是一个设备。听清楚了吧?啊,所以我们就把它统计成一个人了啊,好,那假设这个人,我们今日访问的记录如下。看好了啊,八点钟。我访问了一次。那我访问的时候呢,是这样子的,我先访问你的首页。
05:00
我又访问了你的登录页。我又访问了你的什么购物车页?我又访问了你的详情页。这是我的一次访问。啊,这是我的一次访问。行,那么大家想想啊,就对于你的这一个设备,你的当天的第一次访问来讲。其实我就要把这个人给他统计出来能明白,因为你是做的实时处理嘛,那你这套数据,只要你只要你做过访问了,那我的数据呢,就会进入到我的实时处理过程中,就会进入到我的这个环节。那我进入到这个环节以后呢,其实我就要什么把它做一个统计了,那我就要什么该去做去总就要去做去总操作。那你想想啊,对于你的这种情况来讲,我怎么去做驱虫啊,同学们。这其实我根本用不了这么多哈,我来标识你这个人的话,我是不只需要把你每把你这一次访问中的页面,我只要保留一个是不是就OK了呀。当然保留哪一个你可以自己去看。因为你统计日活,我只要有一个你的访问的一个轨迹,或者访问的一个什么,这个能够识别你这个人或者这个用户的一个什么,访问的一个什么数据就可以了,至于是哪个数据,我觉得倒无所谓。
06:07
能听懂吧,反正最后我们在这个做统计的时候呢,就是你要有这个人的数据,那我就统计过来,你就是一个人对吧。所以说我们就可以这么去想哈,那你的每一次访问,你会访问很多个页面,但其实的话呢,我只需要有一个页面来去标识你的这一次访问就可以了。对不对,同学们,因此我们就可以想着说,那我可不可以先在我的一次访问中呢,先去做一个去动操作。比如说我想办法呢,把这个页面中的,诶能过滤都过滤掉,我最后只保留一个。对吧,大家想想啊,这个我们有有没有什么切入点啊,可以把你的一次访问。做一个驱动操作。如果说你对这个数据还是比较了解的情况下啊。
07:00
那你应该是能够找到这个切入点的。好,我来给大家去说一下啊,什么切入点啊呃,你仔细观察一下我这个访问啊,就是我这个数据的流程,我先访问首页,我再访问登录页,再访问购物车页,再访问详情页。你看这个流程啊,我进入到登录页的前提是我先在首页里面。对吧,我来到购物车的前提是我上一个页面,在登录页,我来到详情页的前提是我上个页面的,在购物车页。就你会发现他的访问其实是一个连续的一个动作。能明白吧,它是一个连续的一个动作,好,那么既然你是一个连续的动作,那在我们这个日志去采集的时候,其实我们会在你的每个页面中呢,去记录一个信息,这个信息呢叫商业ID。就比如说啊,对于我的这个页面来讲,它里面就会维护一个上个页面的ID,维护的就是它,那对于我的这个页面来讲,它就会维护一个上个页面的ID,维护的就是它。
08:00
那同样这个页面它也会维护一个上个上页的ID,维护的就是个空没有。因为我是一个入口。对吧,我是一个入口,我进来以后呢,我才做了一次访问。那你想想啊,也就是说白了,你的一次访问中,你甭管访问过多少个页面,它一定会有一个入口,而恰恰只有这个入口。它是没有商业ID的,其他的是不是都会有商业ID啊同学们。能明白我的意思吧,所以说啊,你怎么把这个一次访问中的数据给它做一个去除呢?那我觉得我就会从你的上页ID作为一个切入点,我把所有包含上页ID的页面的数据我都不要了,都把它去掉,我只保留一个入口。因为我说过,你的一次访问,只要有一个数据能够标识你访问的就可以了吗?对吧,所以说我就会这么放弃,大胆的把后面的数据给他干掉。啊,因此我就会首先去做一个自我审查,什么自我审查,就是我的本次访问,我要做一个自我审查。
09:05
自我审查就什么过滤掉。什么呀?呃,就是last配置ID不为空的页面访问数据,只要你的页面中包含着什么上页ID,那我认为这个数据我就可以不要了。对吧,那最后我只会保留下来他一个。能听到吧,好,这样的话你看一下啊,我做一个自我审查。那我就会什么把你的这一次访问最后呢,就只得到一个什么首页面理解吧,好,那我拿到这个页面以后,那我还得接着往后处理呀,对吧,接着往后处理怎么处理呢?就是该关联维度关联维度啊,然后接下来我们最后呢,要把数据呢做什么,还要什么做这个第三方的审查,就是因为我现在还不明白,我还不明白你到底是不是我当天的第一次访问,我就不能够说贸然的把数据呢,直接写到你的。最后的ES中。对吧,所以说啊,你做了自我审查以后呢,只能够把你本次访问的一些什么无关紧要的数据给它过滤掉了,但是你保留下来这个东西,你敢保证这是我今天的第一次访问吗?
10:08
对吧,之前我没有访问过吗?你不敢保证。所以说呢,你过滤出来以后呢,你还得什么再去做一个什么第三方的一个审查。这个啥叫第三方审查呢?就是我们要纵观全局,是从整天啊,从这一整天来去看,你这个数据我要还是不要。对吧,那你看这个事情怎么做呀,因为我访问的时候,我有可能什么早上八点钟访问,对吧,一会儿还会有数据啊,比如说我中午访问,我晚上访问,那我每一次访问我都会拿到一个页面。是吧,我的每一次访问我都会拿到一个页面,那你说我每一次访问都拿到一个页面了,假如说我将来有很多个页面,那你说这些个页面我都要写到我最后的结果中吗?不是的。不能都写进去吧。我是不是只能最后只保留一个呀,那你怎么保留一个呢?你早上八点钟的,我记录了一个,你中午12点来了,12点来了,那我是不得知道你八点钟记录我呀。
11:02
你晚上这个18点来了,那你是不是也得知道我早上八点钟记录过呀。所以说我们就得什么呀,去给你维护一个状态了,啥叫状态呢,就是今日。已经被统计过的m mid对吧?这个怎么做呢?这个我们一般都会通过第三方的组件来去做啊,又提到了我们的red,我就可以拿我的去做,所以你看了啊,就相当于这样子的,我们通过red去维护一下你今日访问过的mid。自我审查后的数据呢,再到RA中与维护的今日访问的m mid进行比对,你比如说啊,假设啊,它是我今日第一次访问,那么他到这个RA中去比对的时候就发现什么呀,发现这里面根本就没有记录过我这个人,好,那我就把它记录进去了。记录进去以后呢,因为你是比对成功的,对吧,就是比对是没有这个人的,那我就把它记录进去,记录进去以后呢,你不能说光把记录下来,你是不是真正的把这个数据写到我最后的什么ES中,将来我统计的时候是不是还会有你这个人啊。
12:04
对吧,所以说把数据呢,诶写入到这个o lap里面。好,那我们再来模拟,假如说诶,我下午一点钟我又访问了一次,我的访问轨迹是这样子的。我先来到详情页,又来到这个页,又来到这页,又来这个页,那我同样会经过我的自我审查,那我自我审查的话呢,我也只得到了一个什么详情页,就把这个页面给他留下来了。那这个时候。你从这个角度来讲,我是不知道你这个设备ID之前有没有记录过的。你能听懂吧,因为你八点钟,这是一点钟的,我们的批次是五秒钟一个批次。我是不进入你的状态的,对吧,所以说呢,诶,我们只能认为本次访问我有一个页面,但是呢,这个我最终要不要呢,我要到你的red面去看一下,我到red一看,诶已经记录过这个人了。对吧,就说白了,我这个人呢,诶已经被人什么记录下来了,好,那我的这条数据我就不要了。
13:02
就不需要再去记录了呀。对吧。那同样道理,比如说你晚上又访问了一次,你的访问轨迹是这样子的,那最后的话,我自我审查,我得到的结果是这样子的。是不是,那我同样我也要什么,再到你的red中的去做一个审查,那我一看说诶已经记录过这个人了,好,那我这个数据就不要了。这样的话,你看一下我的一天中。我是不是只会记录你的一个人的一次访问啊?就最后你真正写到o lap中的。肯定是一个人只能写一条数据。对吧,那我将来统计的时候,我是基于你的olap去统计,我想统计你的日活,那我是不是只要统计一下你有多少的数据,不就代表了有多少个人吗。能明白我的意思了吧,啊,这就是我们这个驱虫的一个过程。好吧,大家这个仔细琢磨琢磨啊,就是呃,我们先做了一个自我审查,因为做了自我审查以后呢,我们将来去对比的话,就对比的比较少了,当然我完全可以不做自我审查,对吧?我就拿上你的每个页面,比如说一个两个,三个四个,比如说你今天总共访问了100个页面,那我就什么到RA中的去做100次比对,你第一次比对的时候,你就把数据写进来了,你后续的99次比对你都。
14:17
都什么呀,都都会失败。就说白了,你的数据呢,都不可能再写进去了啊,你这99次比对都是白比对的,你都写不进去。那你这样的话呢,无形中你就什么造成了跟什么跟这个频繁交付的一个什么场景了啊,所以说我们可以什么先这个自我审查,就是你数据来了以后呢,我先什么自己内部呢,去做一个过滤,把一些什么无关紧要数据给它过滤掉,过滤掉过滤掉过滤掉过滤掉过滤掉剩下的你们这几个对吧,剩下这几个,然后呢,我再到做一个比对,因为我们自己呢,已经没有办法再去比对了。能听懂我的意思吧,我们自己已经没有办法再去比对了,因为我不知道我们能不能放到一个批次中,这个事情是你是保证不了的,那我只能是借助于什么第三方来去做这个操作。
15:00
好吧,同学们,这就是我们驱虫的一个。呃,思路啊,一个思想。OK吧,大家这个下去以后也自己想想啊,看看能不能够理解啊,或者说你能不能想出来这个更加好的方案啊,就是我们上课讲的啊,就不代表的是它是一定什么最优的啊,或者什么一定是最好的啊,如果说你有更好的方案,那你完全可以什么自己尝试去实现。理解吧啊,下面是这个文字的描述啊,这个大家可以这么自己去看一看,我就不再去说了啊,基本上我们在刚刚的这个图里面的都已经说到了。OK吧,行,那把这个分析明白以后呢,接下来的操作就是可以通过代码来去实现它。好吧,来,我们暂停一下。
我来说两句