00:00
好,关于最后一个DWS层的定位呢,我们就不多聊了,他要做这个。轻度聚合对吧,啊,这管理减少这个维度查询的次数,这个我们都知道啊行,那么接下来呢,直接进入第二章,直接进入第二章第一个访客主题宽表,那也就是说把刚才那个图呢,给它摘出来了,上半部分抠出来。对吧,啊,上半部分扣出来了,那这块呢,是访客主题来,在访客主题当中呢,我们要看到我们要用到这几个指标,第一个PV,那PV怎么求啊,我们要一个一个分析啊,PV怎么求啊。啊,PV怎么求?PV是叫配置view。
01:01
对吧,页面的访问PV怎么求。啊,相当了一条页面日志,就是一次PV没问题啊,那也就相当于把页面日志拿出来。我们直接干什么事啊?直接累加就好了,对吧,来一条数据记个一,来一条数据记个一,然后呢,做一个累加啊,做一个累加就好了,对吧?好,这是PVUV呢。UV是不是要在驱虫的基础上再去做累加?没问题吧,UV是这样子的啊呃,但是呢,UV由于我们已经做好了它的驱虫,所以我们只需要从DWM层直接拿数据就好了。对吧,直接获取这个数据就好了啊好跳出率,注意跳出率呢,它本身是跳出除以总的PV。
02:07
对吧,跳出数除以这个PV数访问页面数嘛,啊,这就跳出率对吧,跳出的啊,但是呢,有个问题,我们现在是DWS层,我们有必要把挑出率算出来吗。跳出率是不是最后ADS层的一个指标啊,那在DWS层我们只需要把跳出数算出来是不是就好了?对吧,大家想一下有没有问题啊,我们最终是不是只需要把跳出数算出来就好了。对吧,好,那既然我们要算跳出数的话,这个也比较简单了,因为我们已经算好了跳出明细。对吧,我们已经算好了,跳出明细,所以它也是对于我们这个数据做一个加工,也就直接来一条记一条,来一条记一条搞定,对吧?好,那接下来进入页面数。
03:06
进入页面对吧,我们要做一次这个。处理这个呢就比较简单,我们直接判断,如果上一跳为空,那就是入页面对吧,上一跳为空,那就进入页面好,然后还有一个连续访问时长,也就总的访问时长有多少。对吧,访问时长啊,那这个呢,也是来自于我们配置lo当中,因为在这个当中呢,我们有一个东西叫duration time。Duration time对吧,所以在duration time的基础上呢,我们直接做some就好了,这个值拿过来做some。对吧,好,这是我们分析的每一个需求呢,单拎出来它都不难,但是现在我们想啊来看啊,这个呢来自于配置log的主题,这个呢来自于DWUV主题,DWUG主题,对吧?这个是UV主题啊,这个是ug d wm啊,那后面两个呢是配置配置。
04:08
对吧,都是配置配置啊好,那也就是说这里面呢,涉及到这么五个需求。五个需求对吧,涉及到五个需求,那个需求呢。涉及到什么呢?三个主题。涉及到了三个主题对吧,那而且每个主题里面数据都不一样,我们还不能简单的说把三个主题呢消费过来对吧,然后统一加工,这个你没法写了,不好写啊,所以呢,我们要分三个流啊,接下来呢,如何把这个数据放到一起呢?对吧,那最后我们肯定要看这样的数据,前面呢有几个维度对吧,维度信息,然后呢是PVUV啊挑出数。
05:03
跳出对吧,或者叫优降优降。好,呃,那还有进入页面数。SV对吧,SV还有一个连续访问时长。有time。对吧,我们要这个内容,我们肯定最后希望把这些数据放到一行上面去。卡跳帧好几次了,其他同学呢,卡吗?其他同学那块卡不卡。不卡。那彭总你那边刷新一下好吧。彭总那边刷新一下就就应该就只有你那块卡了,其他同学都不卡。对吧,那你刷新一下好吧,好。那我们接着思考这个事情我们应该怎么做呢?对吧,前面呢是维度信息,后面呢是这些指标,那我们应该怎么做呢。
06:08
我们如何把这些数据放到一行呢?有没有同学来说一首?我们怎么样把这些数据放到一行上呢?班长说了。卡了就刷新。班长,除了有,其他同学呢?有没有什么想法?想一想,在离线数仓当中,其实我们也遇到过这种问题。
07:10
首先第一个我们能不能,因为你看啊,你无论求PVUVG,还有这些指标啊,它都是有一个维度的,对不对。它都有一个这个维度,那我们能不能根据维度信息做join。想一下能不能。我们能不能直接根据这个每一个指标的维度信息做一个join,可不可以?
08:01
是不是可以啊好,哎,那个向总说对了,但是呢,这里边儿有没有可能某一个维度呢,它没有这个U近。对吧,他有其他的指标,或者有其他指标没有,没有这个啊,所以呢,这个地方啊,应该要用到买卖啊,至少得用左半,假如说那也就是说你一定得先有这个什么PV吧,对吧,你无论有哪一个,有哪一个指标,那一定是不是都有PV没问题,这个是对的,对吧?因为我们都是根据配置log来生成的,所以一定有PV,那如果说我们用PV作为主表,起码也得是一个左派是不是。用in the draw能行吗?这个地方注意一下,起码是不是一个是一个组外组外连接对吧,不说for,起码得是一个组外吧,啊所以在这个时候呢,呃,我们就不能用in draw了,因为inval draw啊,它并不能实现类似于这样的一个功能。
09:02
是不是它并不能实现这个什么左外右外或者说全外啊,但是如果说用Li s就可以弗Li s里边是能行的,对吧?好呃,那data stream呢,你要写的话,只能用connect加状态编程来实现这个功能。啊,就是说全外连接,大家说的全外对吧,那你要用connect加状态编程,自己来保留这个状态,用这种方式来实现这样的功能,这个倒是可以好的可以,但是呢,会比较麻烦,其实大家知道在我们的离线输仓当中,我们还有另外一种做法,就是unit。对吧,就是unit啊,可以怎么做呢?我们维度不是一样的吗?对吧,你有个PV好,你是PV,其他的给什么。给零好,那第二条数据,假如说你是UV对吧,那UV给个一对吧,UV。
10:01
啊,其他的呢,卟啉,那么第三条数据它可能是什么,可能是一个u jump对吧,Ug,然后呢,卟啉。对吧,然后呢,把这些数据用联在一起以后按照这个维度干什么事啊做一个。维度分组K,按照维度K做一个sum是不是就好了?是不是?对吧,这个在离线数当当中是不是也用过呀。离线数当里边咱们是不是也这样干过?对吧,按照这个维度做一个分组,把这个数据聚合在一起,那一聚合,哎,这个地方呢,就只有一个PVUVG,对吧,对应的值都有了。啊,因为其他的我们补的是零嘛,对吧,补的是零好,那也就是说这里边要用到一个东西叫unit啊,所以要注意一下,在要做unit的时候,我们必须要保证数据类型要保持一致,所以我们可以给刚才这种情况呢,写一个Java并啊写一个扎B。
11:13
对吧,好,那最后一件事情就是说关于这个维度啊,那其实在这张表当中呢,唯一就两件事情,一个维度和一个度量,度量比较简单,就是刚才我们那五个呗,我们分析的所谓的指标,其实就是我们的度量。对吧?PVUV跳出次数啊,就是说这个地方最终求跳出率,但是我们要先求跳出次数,进入页面数,连续的防式场对吧?那维度在m mid按照m mid分组当中呢,我们不能只按m mid分组,要按mid分组的话,那你的UV只有一了,一天只有一个,对吧?所以不按我们按mid当中其他的几个东西啊,就公共字段当中我们抽取了几个,比方说渠道,地区、版本,新老用户等等,对吧?这些东西呢,我们可以做一个聚合。
12:03
啊,我们可以用它来做这个事情,按照渠道,按照地区版本,新老用户作为我们的维度,不要直接按mid啊,按m mid这个就太细了,没有意义了,对吧,因为我们UV就是按mid算出来的,那你UV你还算什么呢?那肯定就是一了呀。对吧,如果说按mid分组的话,那肯定就是一了啊,没什么好聊的对吧,所以呢,我们挑选出来比较相对来说重要的几个字段啊,渠道,地区,版本,新老用户。OK吧,啊,所以呢,最后我们出来的每一个主题当中,我们要有四个字段五个字段。对吧,要有这么五个字段啊,当然其他的不灵啊,总共应该是九个字段,我们招聘至少得是什么。九个字段对吧,至少得是九个字段啊。好,那最后呢,为了我们要去做这个。轻度聚合我们要做sum,所以呢,既然轻度聚合,呃,我们不要把一天的数据放在一起做sum,对吧?我们要做轻度聚合,所以呢,最后我们是要十秒钟,今天跟大家说一下啊,十秒钟,十秒钟做一次聚合,那也就是说我们未来要开窗聚合啊,既然要开窗的话,所以在这个基础上我们加一个字段,加一个TS。
13:18
我们想用事件、时间来开创。可以吧啊,当然你不用事件时间,用这个处理时间其实也可以啊,对吧,其实也行啊,这个就随便,其实就随便啊,当然你用事件时间,咱们用实践时间也可以啊,不用事件时间,用处理时间也行啊好,那我们来看一下啊。这是我们的需求分析,对吧,这是我们的需求分析。
我来说两句