00:00
那咱们在写这个呃,Circleq之前啊,咱们在写circleq之前啊,还是先来干什么啊,还是先来在啊明确一下咱们这个事件日志表的它的这个呃,见表的语句啊来首先第一点咱们得明确事件函数,呃,不是事件事件日志啊,事件日志表它里边一行数据所指代的是最明细的一次一一次操作对吧?啊,一个动作这是得明确。第二一个呢,表当中的字段有什么呢?表当中字段会包括咱们的公共字段啊,动作字段以及时间字段,还有一个什么,还有一个那个页面字段对吧?那页面字段相当于是对咱们这个动作的一个描述信息嘛,咱们得知道这个动作是在哪个页面上做的啊,这个意思啊,所以说那咱们看一下这个最终的结尾粤语啊,往下拉一下。咱们这边有局在哪最上面呢啊。往上翻,往上翻。诶,这就是建面语句,哎,咱们看这儿吧,这个在这儿的这个建表语句,这个颜色给咱们区分开了啊,那上边这些黑色的字段。
01:04
公共字段这些呢,就time配置time配置ID,这是页面字段呀,对不对,那这个呢,就是啥啊,就是咱们那个动作啊,就是那动作啊,当然呢,它这里边并没有包含咱们那个页面跳入时间对吧?啊,那个其实要不要无所谓,因为我这个动作其实有自己的动作时间的,对吧,这是动作时间,OK,那这就是啊,咱们在这提到的这个呃,键表语句啊,把它拿过来。啊,那下面语句的表名呢,叫做dwd action log,然后呢,分区表,然后呢,呃,数据的结构,数据的格式呢,是PA qui加那个拉斯罗啊,这个咱们不再重复啊好,那键表放在那儿了,那这个circle咱们怎么写啊?来吧,开始写circle了,函数也有了,键面语也拿给大家了,那接下来我们要做的就是照着这个东西去写,哎,咱们的circle了啊。来我们的思路应该是什么样的,CTRLCF3啊,那思路应该是什么样的呀。
02:00
这个思索咋写呀,我我我们已经明确了啊,咱们需要使用自己写那个UDTF函数,需要将咱们日志当中那个X数组是不是得炸开啊,对不对啊,那所以咱们先不说这些字段,咱们先把这个let review这块先搞定,对吧,Select,然后from from这张表o DS log啊然后后边呢,我们需要过滤一下啊来日T为DT,哎,等于2020杠零六啊,然后杠幺四来先把这搞定啊,然后呢。那怎么办?然后是不是还得再加一个过滤条件啊,对不对,这回艾是按什么呀?按的什么呀?嗯,是不是得这这次得判断谁了。得对,得判断action字段了啊,为什么?因为咱们前面分析过啊,就是我首先得明确action这个表当中的数据肯定来自于咱们那种页面日志表的页面日志对吧?可能来对这个当然有,只有都知道这个动作数组呢,并不是所有的页面都有,因为有些浏览的时候我可能没有动作,对吧?那所以这次咱们过滤得过滤什么呀,得过滤有action的对吧?啊,那这样里边它才有动作,有动作我才需要它啊,那所以说这块呢,咱们需要哎,再加一个and啊and什么an get,杰森object,然后把谁放进来,是不是还是烂啊,那后边咱们获取的是谁?应该是dollar.a ion,注意有S,那日志里边是有S的action啊,当然后边应个是is,哎,Not,哎,No,哎,好过了条件写完了啊,完了之后呢,我们就可以去写那个呃,Let review爆炸函数了,大家要知道啊,咱们这个let view这个所谓的爆炸这个操作和where过滤啊这个。
03:44
谁先谁后啊,虽然你写是把那个谁写在前面了啊,虽然写是把那个来图尾U咱们写前面了对不对,但其实啊是where先执行啊,先过滤它才会去给你扎开,能理解吧啊所以说你这直接写就行啊,那这个from它,然后where,呃呃,From这张表,然后let review啊,Let review啊后边再加上咱们自己写函数,叫做ex explode explode杰哎,Read啊,然后来括号把谁放进来。
04:14
要炸的是谁?咱们占谁是不是大那个actions数组啊,对不对,但是那个action咱们现在怎么拿到呢?怎么拿,是不是这么拿,是不是这么难,哎,没错吧,哎直接把这个粘过来是不是就行,CTRLV哎把它哎扔进来,那后边呢,我们需要给它起一个这个呃别名啊叫tmb啊其实有上午有同学问到了啊,那这个tmp它到底是什么意思啊啊,然后后边咱们再来一个,再来一个别名啊,比如叫咱们炸开是不是一个一个的action了呀,就是对吧,咱们取取名叫action,那有同学会会纳闷了,Action咱们现在大家都知道了,这这相当于啥呀。这是咱们炸上那个字段的名字对不对,那这个PTMP,它到底是个什么东西啊,啊,到底什么东西啊。啊,其实你要从源码这个角度去考虑,这个tmp其实就是谁呀。
05:04
其实就是谁,其实就是你炸出来的这几列,你是不是你炸出来这几列,其实它底层是给你封装成了一个所谓的ru呀,对不对啊,一个结构体,一个结构体是相当于有多个字段嘛,对不对,或者说你就把它当成一个相当于一个什么一个小表啊,一个小表,它其实就是那个结构体或者是个小表的一个名字吧,对不对啊,是这样的啊,OK,那大家要搞清楚啊,这个其实无所谓啊,那当然,呃,现在按照大家对这个代码的理解啊,咱们当初在这个位置是不是写了一个什么埃特姆啊,对不对,这埃特姆是谁相当于谁的位置,就这的位置对吧,那也就说我这儿我不写行不行。这个不写行不行没问题,但是这个tmp是必须得写的,它是必须得有的啊,那as不写,你不写的话,你上面选的时候就选谁就选那个item就行了啊,就是这个啊这块呢,大家搞清楚就行,那咱们给它选什么啊啊,那现在我们相当于这个from这个写完了啊,那现在呢,我们给以大家可以先看一下什么样,咱们可以先看一下这个呃,区表长什么样,对,因为咱们前面讲了light尾是不是会有一个所谓的区表啊,对吧,那赖星就是所谓的区表,咱们可以执行一下看一下啊。
06:10
来看这个能不能执行成功,哎,看样子是没问题的啊,你看这个虚表其实就长这样。啊,首先烂字段还有没有,有烂字段还有对不对,然后呢,在烂字段保留烂字段基础之上,是不是又加了一个action字段,这action字段里边的每一行都是一个什么,是不是都是一个action啊,一个action,一个action,一个action,哎,是这样的啊好,那这时候咱们相当于我在select,是不是就是让这样的一个区表了呀,哎,有烂字段,有action字段,那咱们所需的字段有哪些呢?咱们所记的字段有什么?呃,有公共字段,有页面字段,公共字段页面字段来自于哪,是不是来自于烂字段就行,对不对,X里边的具体字段来自于谁,是不是来自于它就行,哎,那剩下的是不是就还是get杰森object呀,对不对,就是其实就是这么的一个逻辑啊,那所以这里边呢,咱们就不在这个手写了啊,直接把文档粘一下啊就搞定了。
07:08
动作日志啊,咱们找到曝光日志往上翻吧,这个离近一点啊。来,OK,把这个拿过来。来把这个换过来,CTRLCCTRLC,呃,然后呢,我放在这CTRLV。好,那这样一来的话呢,我们就能把我们所需的所有字段都解析开啊,然后你需要什么,你就去哪个里边拿就行了,你看这应该很明显对吧?啊还是很明显的好,那这个时候呢,我们把这个circle我们整体的执行一下,看一看最终效果啊走。啊,字段就被解析出来了啊,就是这么的一个过程啊,那UDTF函数呢,按照我们的这个测试呢,肯定也是逻辑上也是没有问题的啊啊,那最终我们在上面呢,补上一个insert。哎,Overright table。DWD应该是X log写成一个part啊,然后呢,把DT,哎等于啊2020杠零六杠幺四啊搞定啊就是这样的一个过程啊好,我把视频录一下。
我来说两句