00:00
好,那接下来我们看评价师表的数据装载啊,那我们还是先来看一下装载时它的数据走向是什么样的啊好,点开这个PPT啊好,大家来看一下,那上边这部分内容指代的就是ods层与评价相关的业务表啊,那这些表呢,实际上就是评价时表的数据来源对吧?那下边呢,指的就是DWD层的评价时表啊OK,那假定我们当天的日期就是2020年6月14号,也就是收藏的第一天对吧?那现在看一下我们能够从ODI层拿到什么样的数据。啊,那不用说,肯定是全量数据对吧,因为咱们前面提到过啊,业务表在第一天的时候采用的都是全量同步。没错吧,那所以说评价里面也不例外啊,好,那关键是咱拿到这个全量的评价记录之后啊,我们需要把这个数据写到评价事实表的哪个分区当中。这个一定得注意一下。写到哪个分区当中,这个是不是得由评价师表的分区规划去决定啊,对吧,那评价师表咱是怎么去规划的分区。
01:06
啊,咱们是按天分区对吧?注意每天的分区当中,我需要让它存储什么,是不是存储当天新增的评价记录啊,对吧?也就是这个评价记录是哪天产生的,就需要写到哪天的分区里,没错吧?那由于我们第一天拿到的是全量的评价记录,没错吧?这里边儿呢,会有一些历史的评价记录,那所以说历史的评价记录是不是应该写到历史的分区当中。啊,是这样的啊,那也就是说我们第一天的时候呢,可能会往多个分区写入数据,对吧?啊,那由于要往多个分区写数据,那所以说我们得用什么,是不是得用动态分区啊。没错吧,啊,那动态分区我们根据哪个字段进行动态分区呢?那显然就应该是评价的,诶创建时间也就是那个cur time对吧?啊OK,那这就是我们首日的装载逻辑啊好,那接下来我们再继续往下走啊,那再往下呢,是不是到了第二天了对吧?啊6月15号,那6月15号我们能从ods层拿到什么数据呢?大家注,从第二天开始我们获到就每天的增量录了,那因为价相关的业务表啊,我们的同步策略是每日增量同步啊OK,那所以说我们这儿是不是只能拿到新增的记录对吧?那新增的记录应该放在哪呢?新增的记录是不是应该放到DWD层当天的分区当中。
02:24
没错吧,那也就是说,哎,从第二天开始,我们处理的逻辑呢,就比较简单了,那就是从ODI层当天的分区里把数据拿过来进行相应的处理之后写到诶,DWD层评价表当天的分区当中就OK了啊,那后续每天都是这样的一个呃逻辑,那这就是评价表的数据走向,接下来我们就去编写一下它首日和每日装载的SQL语句啊好,现在我们打开gra吧啊,那现在我们要做的就是它的首日装载啊,那假定咱们现在的日期呢,是6月14号,也就是第一天对吧?那首日装载的时候我们需要怎么做呢?
03:00
那首先咱们需要明确的是啊,这张表它的数据来源应该是谁,是OS层与相关的这个表对吧,那就谁OS对吧,那我们需要先拿到它的第一个分区的数据,2020,嗯。然后杠零六呃杠114对吧?啊,拿到第一天分区的数据啊,那拿到之后呢,我们需要选择咱们所需的字段啊,那所需段有谁是不是就这些没错吧,那咱们把这个字段呢,可以先处理一下啊嗯,来CTRLV那CTRLF啊使用正则匹配呢,咱们先把前面那个呃空格加号去掉啊,全部删除。啊,删上之后呢,我们再把呃,这个标号诶,以及后边的内容全部去掉啊,来给它加一个逗号啊行,那字段处理完了之后,我们CTRLX拿过来啊,在这儿选择咱们所需的所有字段,诶,你会发现啊,DWD层需要的字段是不是ods层都有啊对吧?啊,那咱这儿就省事了,就不用再去跟其他的表去做关联了对吧?啊,一张表就够了啊好,那现在我们已经拿到了全量的评价记录了对不对?那完事之后呢,咱需要把这个数据是不是写到多个分区当中啊对吧?那也就是我们这需要用到动态分区对吧?那后边insert right table,然加一个DWD应该是comment in对吧?注意后边的partition怎么写,因为是动态分区对吧?动态分析是不是只需要写分区字段名就OK了吧,对吧?那分区字的值在哪写呢?是不是在下边写啊,对吧?那刚才咱们也分析过了,我们动态分区的时候应该怎么办。
04:28
是不是应该以create time作为它分区字段的值,没错吧,但是这个分区字段的值呢,我们不能直接用啊,咱们需要对其进行一个格式化,对吧?咱们只保留年月日就够了,那have当中是不是有一个data format函数是专门用来做日期的格式化的呀,对吧?那在这儿呢,我们把create time放进来啊,然后呢,把它格式化成YYYY,然后杠MM,然后杠DD这样的一个格式啊OK,那现在我们这个首日装载的搜索语句就写完了啊OK,咱现在可以执行一下啊,那由于在这我们用的是insert or right对吧?那所以说这个S呢,是可以重复执行的,咱现在执行一下就没事儿,当然首先我需要先把这个表创建出来啊好,评价时表创建出来,呃,接下来呢,我们把这个首日装载的测殊语句先执行一下。
05:12
然后执行的时候你注意观察一下啊,由于咱是动态分区对不对,那动态分区那是不是有严格模式和非严格模式之分呀,对吧,那我们这儿同样是不满足严格模式的,所以说需要给他是不是启用非严格模式啊,对吧,那在这儿呢,咱们把这个参数给它设置一下诶。CTRLC,那现在呢,我先把这个非阉格模式给它打开,那接下来我们还得去考虑另外一个问题啊,那由于咱现在是不是从OD层去读数啊,对吧?啊,那所以说是不是也会遇到拉泽罗索引文件失效的问题啊,对吧?那所以说我们需要诶把那个合并小文件的参数给它调整一下,对吧?那OK,那现在我们CTRLF搜一下那个参数啊。咱们当初应该是对吧,啊来咱去找一下那个参数,诶,就是它那把它拿过来CTRLC。
06:01
好,我们放在这儿,哎,这个参数呢,咱也要执行一下啊好,那这两个参数一起执行来推车。啊,那现在数据呃,正在往我们的DWD层的comment info表当中来进行装载啊,咱们稍微等一下。好,装载语句已经执行完毕了啊,那现在我们去查看一下dwd com info表当中的数据啊,找一下呃,Dwd com在这是吧,那数据已经有了啊,那接下来我们去检查一下它的分区啊,在这儿我们执行一个show啊,Partitions啊,后边再加上表就可以了啊dwd comment in,那现在我们回车,嗯,好,大家注意观察一下,那现在我是不是已经出现了十,11 12 13 14这五个分区啊,那对吧?那说明我们的首日装载已经完成了,好,那紧接着我们来写一下它每日装载的SQ语句啊,其实每日装载呢,要更简单一点啊,那按照我们刚才的分析啊,我们每日装载的时候要做的工作是啥呀?是不是应该是从ods层的表当中获取当天的分区的数据,然后呢,进行相应的处理,处理完之后呢,写到DWD评价表当天的分区里就可以了呀,对吧,连动态分区都用不到了,那所以说在这儿呢,呃,我们实际上这么写就可以了啊,直接select而from ods层,嗯,对吧?那。
07:16
那假定今天是6月15号了,对吧,那就2020,然后杠零六杠幺五没错吧,那上面我们选择的字段呢,跟之前是一样的啊来CTRLC把这个字段拿过来。喂。好没有问题对吧,那最后这个逗号给它去掉。行,那现在我们已经拿到相应的数据了,好拿到数据之后呢,其实咱这儿呢,没有什么逻辑啊,我们是直接给它inser到or到哪张表,是不是iner到d WD Co in four这张表里,然后分区呢?诶需要指定一下,应该是DT等于2020杠零六杠幺五啊那每日装载的搜索语句咱是不是就写完了呀。对吧,那有的可能会说了啊,那你这个数据从ods层读出来之后,也没有进行什么处理啊,对吧,是不是原封不动的写到了DWD层啊,对吧?那虽然这个SQL语句咱看起来确实是没有经过什么逻辑的处理,对不对,但是让大家思考一下啊,那这张表和这张表他们的数据的存储格式是不同的,对吧。
08:14
那所以说实际上我们这个装载的过程当中呢,诶,这个数据的格式是发生了变化的啊,对吧,由单纯的拉泽罗压缩的文件是不是转为了劣势存储加拉泽勒压缩的文件呀,啊OK,这个大家需要注意一下啊好,那这个美日的装载语句呢,咱们暂时还执行不了啊,因为我们现在还没有6月15号的数据啊,这个等后边我们再诶统一执行。
我来说两句