00:00
好,那接下来呢,我们就开始进入第三个需求。第三个需求呢,它是流量域。页面浏览各窗口的汇总表,也就是说没有力度。没有力,我不通过任何的维度去观察这个指标,就相当于算一个单值对吧?好,那我们看一下这个需求里面我们要做什么事啊,我们要从这个卡布尔日志主题当中读取数据,统计什么呢?当日注意注意当日啊。对吧,当日的首页和商品详情页叫独立访客数。啊呃,这里边呢,还有一个点啊,就是访客,你看到访客呢,你应该想到就是mid,如果说你看到的关键词叫用户,那你想到的应该是UID,注意啊,这个一定要注意一下,一般我们这样表示访客呢,是从m midd的角度,设备ID角度来考虑的,而用如果说我们提到的叫用户,那应该是UID来考虑的,OK吧,好,那这是什么意思呢?就是说我们看一下。
01:04
关于每天对吧,啊,就是说从截止从今天凌晨开始到截止到现在。有多少个人访问过首页,有多少个人又访问过这个商品详情页,对吧?我要的是这个人数,那很明显。这个地方要。干什么事了,大家想。就是如果说我要这个人数的话。要什么事了?啊,你明天告诉我主要的点在于什么。
02:02
我们要求这个独立访客数,也就是说从凌晨开始到现在。对吧,截止到现在为止有多少个人。啊,访问过首页,有多少个人访问过这个商品详情页,那这个需求我们最重要的要做什么事的。啊,我们要求这个人数。转化率计算。啊,怎么到转化率了,哪哪有提到转化率啊。Mid去重对了,对,去重嘛,我要的是人数嘛,对吧,我不是要这个首页访问的次数,那肯定是要按照m mid驱虫嘛,而且呢,在一天范围内进行驱虫,对不对。
03:03
在一天范围内进行驱动,那这个好像我们做过吧。在一天的范围内进行去虫,咱们好像是不是做过。这个大致的思路应该是什么样子的?比如说我们现在就考虑首页啊,因为他俩一样吗?你首页会做了,那你商品详情页肯定也会做了,他俩完全一样。对吧,怎么做。假如说我就要求这个首页的。访问人数对吧,独立访客数,那咱们应该怎么做呢。啊,有没有同学来说一说大致的一个思路,对吧,我们之前都求到过,哎,用这个。状态。对吧,啊,用这个状态没问题啊,就是说呢,我们状态里边保存的还是日期,注意到日期到天对吧,年月日,然后呢,我们去判断一个m mid来了,我们去取这个状态,如果状态等于now。
04:08
或者状态时间跟我当前这个数据时间它不同。它不相同对吧,那么。我就认为它是我们要的这个首页的访问数据。对吧,啊,那如果说呢,你状态不等于呢,并且与我当前数据里的时间是相同的,那不好意思,这个说明你今天已经来过了。对吧,今天已经来过了,那我们就不考虑了,没问题吧,啊,那同理商品详情页呢,也这样做,也就是说当年这个需求呢,到时候我们要定义两个状态有没有问题。对吧,这个在我们请那个日活最早做那个。UV那块驱虫的时候是不是就已经用过?这种方式了。
05:01
OK吗?这块就我们刚才所说的。能行吧。对吧,这个驱虫啊,都写过了啊,刚才呢,又描述了一下对吧?啊,那你的状态等等于呢或者。啊,假如你不等于,那么不等于,那或者呢,你状态的时间里边日期与当前数据日期不相同,那么。我就是我们要的数据,否则呢就不要对吧,否则这个数据呢,就不是我们要的数据啊好,这是我们整个的一个需求,它这个点就在这啊,那接下来我们看整体的一个思路,对吧,在这啊,第一个读取这个页面主题数据啊,或者说咱们这样吧,直接看这个啊,这这地方的文字我就不读了啊,直接看这个,这个流程呢,可可能看的更清楚一点啊。来把这个打开。
06:08
好,首先第一步呢,消费我们卡夫卡DWD页面主题的数据,对吧,肯定先消费它,呃,接下来呢,我们要把这个类型转化为切对象,因为这样的话呢,会更好处理一点啊好,那么继续过滤数据,因为我们要的是什么首页和商品详情页的访问人数,那么。我们肯定先做一个过滤。先做一个过滤。我们只要。首页或者商品详情页的,其他的都不要对吧,所以呢,做个过滤,这样的话呢,我们最终呃,由状态计算那个数据呢就会少对吧?好,那之后呢,这个就直接过滤出。这个主页或者详情页的这两种呢,保留其他的都不要对吧。好,那之后呢,嗯,设置水位线,当然你在后面去设置,在分组开装之前就设置也也可以也可以,这个倒还好,对吧,然后按照mi分组对吧?啊分组分组,这一次分组干什么事呢?我们要做的一个事情。
07:13
啊,这个是按mid分组,那有同学可能在想,那不对啊,你刚才说这个需求没有力度啊,对吧,没有力度。那为什么还要分组呢?对吧,那这次分组是为了什么,为了驱虫对吧?啊为了驱虫啊好,那在这里边我们判断它的配置ID是什么,是这个后。对吧,啊是这个主页,主页的话呢,按照我们所说的,诶,那。有一个状态对吧,叫home last dt最后一次的访问时间,哎,如果它等于呢,或者跟当前的访问时间。不相同,注意有个感叹号对吧,哎,如果不相同,那这个呢,我们就。把这个置为一,把这个置为一对吧,要置为一啊,同时更新我们的状态,状态需要更新对吧,你得不断的往后去推移啊,否则的话呢,就只为零。
08:09
啊,那么我们定义一个变量啊,定一个变量啊,取值为零对吧?啊,这是一个。那接下来呢?还有固定要跟这个一样吧,逻辑一样对吧,如果说两个不同的状态啊,如果是的话,它是一啊,然后呢,否的话它是零。它零对吧?啊,然后统计啊,这里边是我们刚才所说的这个点啊,但是这里面有一个要注意啊,那有没有可能它俩都。为零呢,就是它呢。走的零对吧,他也走的零,有可能吧,两个如果都是零,这个数据呢,我就不写出去了。对吧,这个数据呢,我就不写出去了。啊注意啊,如果说这边这句话一定要注意当。这个值和这个值至少有一个不为零的时候,我们才需要把数据发送。否则。
09:01
就不要。啊,否则我们就不要对吧,也就是说它呢,不光是要处理这个数据啊,过滤这个数据。对吧,在这边我们按照MIT分组以后,我们要转换这个结构。转换这个结构对吧?同时呢,咱们还需要过滤,所以呢,这边我们用Fla map对吧?Reach flat map是最好的啊,因为可以创态变成啊,可以过滤,可以改变数据结构对吧?好,那最后呢,就是开窗,注意这个开窗呢,我们没有按照分组对吧?没有分组,那这个开窗呢,就得用window or去开窗了。啊,咱们就只能用window or了,对吧?啊,那之后呢,还是一样的聚合,还是一样的用这个。方。对吧,用一个增量聚合再加一个。Window方向,但是这个地方呢,是or window方向,因为前面呢,我们开窗的时候将会用到window or,而不是用window去开窗了,因为现在呢,没有K派,那有的人说不对,这不K派吗?注意这个K派被他已经用过了,用过之后呢,它就已经是一个普通的data swim到这儿它就不是一个监控流了。
10:16
它就不是一个k stream,所以呢,在这个地方咱们要用到window or去开窗。啊,这个不一样了,对吧,最后呢,我们要做个聚合,但是聚合方式还是一样的,还是用两个函数,一个呢增量,一个呢全量,全量之后呢,为了补充这个窗口信息,对吧,还是一样的啊最后诶聚合好以后。可以把这个数据写出去。对吧,可以把这个数据写出去啊。在这写到克house里边啊,这个这个里边聚合,这也没什么好说的,就TS对吧,作为版本姿态啊好,那这是。我们所看到整个的一个数据流程。对吧,啊,那最关键的点呢,就在于这一部分。这。对吧,啊,还有这儿这儿呢,我们之前很少用window or开窗对吧。
11:04
好,这个呢我们就干掉,这是我们的需求分析和思路整理,接下来呢,我们就去coding,对吧。
我来说两句