00:00
那接下来呢,看我们DWS层的第二个。需求啊,那这个需求还是流量域,也就是说还是这个。行为数据对吧,然后呢,是版本渠道地区访客。类别。力度啊,访客类别啊,这四个对吧啊。版本渠道地区访客类别力度,诶四个维度嘛,对吧,这个力度下的页面浏览的各窗口汇总表。啊呃,那窗口呢,还是十秒咱们的。维度在这四个字段作为维度的,对吧,那我们的度量呢,是页面浏览啊,但是具体的度量值。我们得分析一下,我们到底要求什么东西。对吧,好,那我们来看啊,嗯,这里面呢。我们要分析的内容有。绘画术。
01:01
想一想这个东西怎么求绘画数对吧?呃,页面浏览数。PV页面浏览数不是PV嘛,对吧,浏览总时长。总共都九对吧,然后呢。独立访客数。啊,独立访客数。UV对吧,Dau,然后呢,跳出绘画。好,呃,那这两个好像我们加工过,大家想是不是。这两个我们是不是在DW层专门的加工过呀,这个独立访客做了去重还记得吧,而这个呢。我们是不是用CP来实现的?我们用的CP去实现的一个需求,对吧,所以呢,他们直接拿过来累加加一就行了,那我们要考虑的是前面这三个会话术,大家告诉我应该怎么求呢。我怎么求这个会话数?
02:01
他没有绘画ID啊,那我怎么求绘画数呢?嗯。大家觉得这个东西应该怎么求啊?我怎么找到?绘画数据啊。啊。绘画入不会求是吗?很简单呀,这个东西这个不难吧,找那个什么上一跳页面为浪的,那不就是一个新的绘画吗?对吧,我把这些数据找过来做一个累加不就好了吗?
03:02
哎,对了,云总啊,这边延迟可能比较高,我刚看到啊,当然你估计听到我说。肯定也得有一会了,对吧,啊没毛病,找上一跳页面ID文档的对吧,页面浏览数呢,那这个很简单。对吧,为什么说这个简单呢,那PV嘛,每一个。数据那都是一个PV要加一对吧,因为这个会话数也好,还有页面浏览数以及浏览总时长,那这个需求呢,都是要从这个配置log里边去加载数据的。对吧,咱们要从这个配置log当中去加载这个数据,没毛病吧?好呃,那我们就知道了,就是对于绘画术呢,我们稍微的要考虑一个逻辑条件,那其他的像页面浏览数。浏览总时长对吧,都是直接累加,因为在我们的数据里边呢。
04:00
呃,比方说找一个啊,这是一个页面数据看这。它有一个during time。对吧,间隔的总时长啊,间隔的总时长对吧,那我们就把这个内容呢,做一个累加就好了,就刚才这个值对吧,直接做累加,来一张数据累加一点,来一张数据累加一点就行了,对吧,而PV呢,就是相当于抗新来一个累加一,累加一就行了,对吧,我得给他搞为一啊,就这样的方式。好,那么。问题来了,这个呢,我们知道它来自于。诶,打开这个啊。这三个呢,它来自于配置log,这个呢来自于UV的主题,对吧,而这个呢,来自于ug的主题。那这是三个主题,那未来呢,我有三个流。最后呢,我为了要统计我想要什么效果呀,就是说前面呢是维度对吧,比如说第一个版本。
05:02
啊,第二个渠道,第三个地区对吧,第四个呢,访客类别,这个类别呢,咱们用的是这个in new标记啊。银子有标记对吧,然后这四个,然后后面呢,跟着五个度量对吧?啊,假如说呢,00000。我们要实现这样的一个效果,能明白吗?就是说把我们这五个度量啊,最终如果你维度相同,我应该合并到一起。我应该合并到一起,那这个应该怎么做呀?就是那你看啊,我我第一个流里边能得到这三个指标,第二个流是它,第三个流是它,对吧?诶这涉及到三个流,我要把这个指标这个度量合到一起。我要根据相同的。维度对吧,就是我们所谓的力度啊,就是维度组合嘛,相同的力度给它。合并成一行,那这个应该怎么做呀?
06:02
就这意思啊,大家可能呢。大家能get到这个点。是这样子的,呃,比如说呢,我们现在不有这四个吗?VC对吧。嗯,刚才什么渠道对吧。A地区,嗯,还有一个。零六好,那第一个呢,我能求出来有什么有这个。进入页面数两个。嗯,PV数三个。然后呢,访问市场5623,比如说啊好,那接下来呢,我呢。有一个U位数,诶是一个。然后跳出数是一个,比如说啊,这个呢,是第一个流里边求的这三个指标,但是呢,我不希望这样,我要什么样子呢,我要这个。我要这三条数据。
07:00
变成它。对吧,这个意思吧,因为你来自于三个流嘛啊,你没办法直接是这样对象,因为你有了它之后,我们才好聚合呀,才好写出去呀,对吧,要不然你三个流里面字段都不一样,我写表我怎么写啊,我肯定要把它归成一行数据吧。对吧,把相同的前面这四个内容的相同的归成一行数据,那这个我们可以怎么做。我们可以怎么做,大家想一下。对了,很明显这边呢,咱们是不是可以用drawing啊,对吧,Join的条件呢,是不是就这四个。把它装起来好,呃,但是呢,这边如果咱们要用join。那你说用内连接还是外连接呢?我们用内连接还是外连接呢?
08:04
这个地方如果说我们要做join的话。那它是一个内连接还是一个外连接呢?那你就想有没有可能这里边儿某一个用户,他只有其中一种数据。对吧,它只有一种数据,假如说呢,我这个用户我只登录了,但是我没有访问页面对吧,我没有其他的数据,那必然咱们要用的是不是外连接啊。对呀啊,那外连接呢,如我们之前说了啊,这个DWS除了第一个需求。咱们后面的都用data STEM的方式API来写,对吧。咱们都是用。Data stream的方式来写。
09:02
啊,好。嗯,那我们之前说过data swim呢,它只有这个join是内连接,对吧,你要写外连接呢,会很麻烦。那也就换句话说,这种需求除了。除了用join,我们还可以用什么?除了用join,我们还能用什么?就是我们要实现这样的需求。除了join啊,你想一想我们还能怎么做,就是你想你想搜对吧。集合函数。集合函数是什么东西啊?哎,云总说了UN不错啊,用UN对吧?啊,比如说我把这个数据变成什么样子。
10:03
跟一个零跟一个零给默认值嘛,对吧,那同理这边呢。对吧,我把这个数据,刚才我们的数据呢,变成这个样子,哎,那你没有的我补零对吧,把它统一成一个格式,统一格式之后把它干什么。是不是UN起来啊。能明白吗?Unit以后我再按照这个作为分组条件一聚合。他是不是就形成了这样的一个结果呀。对,Unit之后是不是还要一次聚合呀?啊,就像云总所说的,先用在上吧,把它聚合起来。能明白吗?其他同学能明白对吧,那在流里边呢,咱们可以这样玩,哎,那我没必要非得用这个。Drawing。对吧,你不就是把多行数据合成一行吗。
11:03
对吧,那我只需要这样去做不就行了吗?对吧,因为你后面都是度量值,我可以直接some,你又不是说spring啊之类的东西是不是能明白。OK吗,这块。对吧,这一块如果说没有问题了,那么接下来我们思路就有了,我们首先呢,肯定是消费。三个主题的数据。对吧,然后呢,统一格式,统一格式以后进行一个UNUN好以后呢,我们就提取时间戳生成wordmark,然后分组开窗聚合。然后写到可以house能明白吗?这思路就顺了,对吧,无非就是说我们要把数据变成什么样子呢?哎,比如说啊,这边都是一吧。这边都是一可能更好理解一点,对吧?啊,那每一条数据呢,都变成这样的,然后呢,我们聚合做一个聚合对吧?啊,所以呢,我们思路就有了啊,整体上的思路来看一下啊,这个里边呢,我们就。
12:01
不一个一个去看了啊。这是旅游的招引对吧,我们不聊了啊,那就是这边。就是他对吧啊,我们稍微的过一下我们的思路啊,其实刚才呢,我已经把这个整个思路都说了一遍了,对吧。好,那首先呢,消费页面主题数据。诶,把它提取这个浏览时长,页面浏览数,会话数转换数据结构为统一的一个结构,对吧,当然我们可以写一个招聘,这招聘里边呢,就包含四个维度。然后呢,五个度量值啊,再加一个。TS时间戳对吧,再加两个东西。开窗的时间,因为我们还是要往克利浩斯去写嘛,对吧,所以呢,我们再加上窗口时间STT跟e dt OK吧,好,那这个呢,我们到时候把这个招聘拿过来啊,那也就是说12个字段呗,刚才我们说的对吧,那四个。
13:09
四个维度,那在这版本渠道地区用户类别四个。维度五个度量对吧,那这边呢,有三个,一个UV一个ug。这是五个度量,一个TS,这就十个了,再加一个STTDT12个字段,对吧,咱们这个扎啊,12个字段OK好那。转换数据结构,那在这啊,就是里边的内容,到时候我们再具体的聊,那接下来呢,嗯,用户跳出主题对吧,然后呢,统一数据结构啊,还有一个UV。UV数据对吧,独立访客啊,接下来呢,把这三条数据做一个什么合并。把它合并到一起,合并到一起以后呢,我们就是提取区件时间生成word。对吧,设置水位线接下来。分组开窗聚合,那分组条件在这儿。
14:00
我们的力度对吧,就是我们的分组条件最后。开窗。句号。聚合,聚合好以后呢,可以把数据。写出对吧,写到克林号里边,哎,这就是我们整个一个需求,只要你把需求分析清楚了,接下来代码呢,就简单了,而且往林号去写啊,这个工具类我们都已经写过了,对吧,直接掉就完了啊,这是我们整体的一个需求分析啊。好,那接下来呢,咱们就正常往下走,对吧,首先呢,我们正常往下走,第一步呢,接表语句啊,正常拿过来,那里边字段呢,还是跟我们分析的一样啊,两个呢是窗口时间,四个维度,五个度量,一个TS。按天分区,按照我们的窗口加力度,作为我们的去重字段,对吧,好把这个直接拿过来。好,现在呢,我们就创建了一张表对吧?呃,那下来第二个拿我们的招聘,招聘呢,跟建表语句里面字段完全一样,对吧,好拿过来啊。
15:04
放在我们的病包下。然后把这个招聘呢,给它粘过来啊。好,这个字段呢,我们也就不用看了,它跟这个建表语句完全一样,我们都已经分析过了,对吧,接下来我们就开始写这个代码啊,我就拿一下这个东西啊,然后呢,我要把这个思路写一下。这个比较长,因为这个力度里边包含的维度比较多啊。种类。那么接下来第一步。获取执行环境。对吧,第二。读取三个主题的。数据创建。流对吧,好,那接下来呢,统一。
16:03
数据格式吧,啊,统一数据格式啊。统一数据格式啊好统一好以后呢,我们就可以用了,对吧。将三个流进行。Unit。啊,那第五步用好以后呢,我们提取事件时间生成mark啊。啊,生成的话啊,那么第六步呢,就是分组开窗聚合了,对吧。好去好好,以后可以将数据写到这。第八。
17:02
任务对吧?好,这是我们的一个内容,呃,第一个获取执行环境,那不用写了,直接把这个拿过来。他呢也不需要了这个table,因为完全不需要,对吧,让它后端呢给它做掉就好了,第二个读取三个主题的数据创建流,但是我得拿一下这个。拿一下这个。主题OK吧啊,这玩意儿你要自己敲,容易敲错哈。呃。这是第一个。个数白对吧,在这啊,我看一下啊呃,下面第一个主题我哦,我之前写的还是分开写的。这是独立访客,哎,这个主题对吧。我放在一起写多好。好。这是U的酵母对吧,UU界啊U键好,那接下来呢,还有一个是。
18:03
UV吧。DV在这啊。嗯,咱们这样吧,我把这个按照这个顺序写一下。让大家感觉到我们的这个呢,是最复杂的对吧,它呢里边东西多一点,UV啊,U键啊都比较简单啊,所以呢,我们把它呀放在前面可以吧,然后呢,我们去创建这个硫三个流对吧?呃,那就是。V点叫麦卡夫卡点。卡卡的一个。Consumer消费者对吧?好,那么这里面呢,一个UV topic,诶,我少写了一个东西。加group ID。ID对吧,我们给一个ID啊,还是一样的,按照我们之前的规则啊来。这个不要了吧。
19:00
嗯,这样。前面是力,中间呢。度量。好,那这边呢,Group ID,这是第一个我们的流对吧,这个呢是UV吧,叫UVDS。啊,UV这个DS对吧,啊同理,呃,Carr DR d啊,然后呢,第二个把这个往这一放,这个呢叫U界的DS,第三个是它叫topic,就叫topic对吧。就叫他诶。完了。叫topic啊,这个呢是配置DS啊配置DSOK吧,这是创建三个流就搞定了,这个都还好对吧?啊那就搞定了,那第三步统一数据格式,也就是说将我们UV这个数据啊。呃,我们要把它变成什么?变成我们的招聘对吧,变成我们的招聘啊好,那UV点点那转换结构为招聘,那必然用的是map那一行数据对吧,转换。
20:12
首先呢,刚读过来数据是一个string类型,那不利于处理,所以呢,我们先切。点pass object,然后呢,这个。长加V得到一个杰森object对吧,最后呢,我们要返回的数据叫什么,就刚才写的这个招聘对吧?Traffic page view啊,那我们写一下。叫page will be。对吧,呃。哎,少了一个六啊。那这里边呢,要放的内容。窗口时间给不了,那这个呢,要到最后我们开窗以后再去补对吧这个字段。呃,那接下来是VCR is6这些个东西呢,是不是来自于common字段呀,对吧,这个属于我们的度量啊,它都是维度,都在于我们的common字段里边看啊A。
21:04
对吧,Common啊common a ch渠道对吧,六标记,然后还有一个VC版本。对吧,啊好,那么这个东西呢,首先我们在这获取common,那四个都来自common,所以呢,你在这先get杰森object common。得到common姿态,接下来呢,我们就可以写这四个啊,分别哪四个,第一个是VC对吧,common.get string啊,第一个是VC啊,第二个是CH。String。渠道China,那第三个。Get第三个咱们写的应该是谁啊?第三个是A啊地区对吧,第四个。是那最后一个,那肯定是一六了。对吧,字段好,那这个地方写度量,度量当前这个UVDS,所以只是UV给一,来一条数据是不是记个一啊,来一条记个一,来一条记个一吧,对吧,好,那这个给一。
22:12
其他都给您。因为你这个流呢,只能提供什么。这个数据对吧,好,那接下来是我们的最后一个TSTS呢,在t object里边点get。这边。写一个。这个没毛病吧,啊,就是你要对这个结构比较熟悉啊,那这个呢是。咱们叫traffic page view with UV DS对吧,这是这个里边呢,带的是UV的数据啊,UV的数据就是处理UV,那同理第二个。第二个啊,我告诉你直接把它拿过来改一改就行了啊,那就是ug。
23:01
第二点卖。把这个拿过来,我告诉你,很简单啊,往这一放。往这方什么呢?接下来就改一个地方改哪哎,应该改两个,改两个,不改一个,这改为零,然后呢,Ug这个位置改这么呀,改为一。对吧,就是这个改为零,这个改为一就好了。看啊,得到一个。这个呢,咱们就得到了,为。有界的一个。Yes。可以吧,啊,咱们直接with ug好,同理咱们还有一个page。点点map,呃,那么呢,咱们也把它这个拿过来啊,但是呢,这个要改的东西就会多一些啊,要改东西多一些对吧,首先呢,这得是零对吧?呃,那么这里还有什么呢?首先这个PV啊得改为一。它是一对吧,它得是一啊呃,那下来还有。这个SV啊,我们得判断。
24:02
我们得判断,我们得看上一跳是不是为捺。如果为捺。它是一,如果上一条不等于呢,它就不是一,也就无论怎么说,我们得取上一条页面对吧?好,那我先把页面取出来,那就杰森点。Get。杰森,先获取一下这个配置。对吧,它要获取过来啊好,那这边呢,就看lastd是否频档,那还有一个during some during some呢在这对吧,它有一个during time,当然也来自于配置当中,所以这个倒还好,不用判断,直接把这个值加累加过来就好了,对吧,所以呢,呃,它呢,我们可以先写在这。配置点get。对吧,把它放进去。啊,把它放进去就好了,那先最后一个就是SV session count对吧?啊session好,那么这个东西啊。首先配置点get string获取什么呢?获取我们叫配置ID。
25:05
加倍找到它对吧,将来我们定一个变量啊,让。SV默认呢给零,然后这边写if last配置ID,它等等于那对吧,那我把这个SV呢改为。一然后这我不要写0L了,也不要写一都不行,我可以写谁写SV。对吧,我写一个SV,那这个呢,它这个配置。这一个主题提供三个指标对吧?呃,哪三个second count PV数,然后呢,页面访问总时长。OK吗?这块当然也的说,我这直接写一个三元运算符行不行可以。你直接写一个三元算符行不行,可以啊,你不这样写对吧,不把它拆开,我拆开了可能看得更清楚一点,你不拆开对吧,直接在这写一个三元算也行也行,无所谓啊,好,那这个呢,咱们也就搞定了,抗上阿加菲对吧,得到一个。
26:11
With。配置DS可以吧,好,那到目前为止这三个流的转换统一数据格式大家有没有问题?啊,告诉我有没有问题。这个应该没什么问题吧。就无非就这一块稍微的加工了一下,对吧,其他两个都是来一条记录一条,因为UV数据我们在前面已经处理好了,这个U界数据也同理。我们的前面已经加工过一次了,所以就直接用了,对吧,来了直接用啊,这多方便啊。
我来说两句