00:00
好,那现在我们先把这张表的数据装载的circle编写一下,然后再进行相应的测试,好,现在打开data GR啊,OK,我们一起来编写一下这个装载语句,OK,那我们首先需要确定就是从哪取顺啊,那这其实很简单啊,那是不是肯定是从ods层的唯一的一张日志表当中去取啊,对吧,也就是ods log啊,Select,然后from ods log,那然后呢,我们需要把当天的数据过滤出来,DT等于2020杠零六杠幺四啊,然后再继续,那由于我们是要往呃动作日表当中装载数据,对吧?那所以在这儿呢,我们需要把包含action字段的日志拿到啊,对吧?那其余的我们需要给它过滤掉,那这怎么写呢?是应该是get object完把放进去啊,后边呢,来尝试的获取里边的action字段,能获取到咱就留下啊,获取不到就给它过滤掉,那后边应该是is not not,对吧?OK,那按照我们前边那两张日表的写法。
01:00
啊,那到现在为止,我们是不是就可以使用get杰森object函数去逐个获取我们所需的字段了呀,对吧?但是动作表跟他们不一样,对吧?动作日表是不是还缺一个一进多出的操作呀,对吧?啊,那这怎么做呀?哎,其实很简单,咱们需要在ods log这张表后边加上一个是不是letter review you啊,对吧,Law v,那后边呢,我们需要接上自己编写的UDTF函数,对吧?也就是这个e s pro explode杰。Rra没错吧?啊,然后大家要注意的是啊,我们需要往explore的杰森rra当中传入什么参数,咱们传入的是不是应该是一个杰森数组字符串对吧?那是不是就是这个函数的返回值?没错吧,诶,OK,那CTRLC拿过来,我把它放在里边啊,那放进去之后呢,此处我们后边需要再写一个tmp的别名对不对?然后后边呢,再写一个I字啊as,后边呢,我们再写一个别名啊action,那大家要搞清楚啊,这两个别名它的含义是什么?这tmp是谁的别名?这action呢,又是谁的别名?
02:06
啊,给大家简单解释一下,这个tmp呢,大家可以理解为udtf,它输出的那个结构体的别名啊,那里边呢,有多个列对吧?那还有多行,那你可以把它当成一个是不是当成一张表啊,对吧?有多列完有有多行,这是不是就一张表?诶,你可以把它当做这个结构体的别名啊,那后边的action是谁的别名呢?是结构体当中,也就是UDTF输出的每一列的别名,那当然呢,在这儿我们只有一列对吧?啊,只有一列,那所以说咱只需要一个列的别名就行了,那假如咱这个UDTF输出的结果呢,有两列,那后边应该怎么写呢?哎,那你就得在后边呢再写一个别名了。啊,就是这样的啊,OK,这是这两个别名的含义啊,那当然其实这个列的别名啊,咱们不写也行啊,为啥不写也行啊,因为我们在代码当中是不是已经给他指定了一个列名了呀,对吧,你往下看。啊,咱往下走,往下走这个位置这儿是不是有一个iem啊,对吧?那其实我们这这个action它覆盖的就是诶代码当中的item,那当然了,你这不写埃克,直接用item其实也可以OK啊,那这就是我们呃,Let review you,它这的一个语法大家需要遵守好,那咱们现在先执行一个select星啊,看一下加上UDTF之后,那咱现在的效果是什么样的啊来,我们把这个circle执行一下。
03:26
好大来一起看一下啊,来我把这个往这边调整一下。好,大家来看啊,那左边这个烂字段是不是原来ods log表当中原有的字段对吧?当然这个DT呢,在这儿它也当做一个字段给咱们展示出来了,这也是原有字段啊,你看现在是不是在原有的字段的基础之上又多了一个action字段呀,对吧?Action字段实际上就是咱udtf它的一个输出啊,是这样的啊,那当然那咱的现在数据除了多了一列,是不是行数肯定也之前有所增加对吧?因为原来的一行它含多个动作,那现在是不是会变成多行呀?那现在我们就是要从这样的一个结果当中去选择我们所需的字段,那怎么去选择呢?其实就很简单了,对吧,我们需要从烂字段当中获取咱们所需的公共字段以及页面字段,对吧?然后呢,在后边的action诶这个字段当中去获取动作的四个字段,那他说剩下的工作其实就比较简单了,是不是就使用get杰森object函数逐个去获取就OK了呀?
04:30
对吧,那OK,我把这个关掉啊,那现在我们把上边的circle给它补全,呃,在这呢,其实就很简单,直接使用get object函数,依次从line以及从action当中获取咱所需的字段就可以了,在这儿呢,我们节省时间就不再手写了啊,拿一下文档当中的结果啊,来,从这开始,我们往下拉,拉到这个位置啊,CTRLC。啊,放在这儿来大家一起看一下啊,那首先我们先看这一部分啊,这一部分是不是从哎,咱的烂字段当中啊,它里边的common当中去获取,诶,每个字段没错吧,那这个呢,是从LA当中啊,它的配置的字段里边去获取页面相关的信息啊,那最后呢,是从action当中获取action,也就是动作相关的字段。
05:17
OK,那现在我们把这个circle执行一下,看能不能得到正确的结果来走,嗯。OK,大家看啊,那现在我们就已经把每个字段都解析出来了啊,OK,那基本上我们就完成了动作日表的数据解析了,那那最后呢,我还有一步就是需要将数据给它insert到我们目标目标表当中,也就是呃,DWD加一个table啊DWD应该是action log对吧?后边呢,别忘了加分区啊partition dt等于2020杠零六杠幺四。OK,那这张表的装载语句咱就写完了。
我来说两句