00:00
好,那接下来我们开始编写商品维度表的装载语句啊,那按照我们刚才的分析呢,呃,我们的大体的思路是先从o Dis层相关表当中获取所需字段啊,然后呢,再将这些字段join起来啊,没错吧?那接下来我们就开始编写啊,那首先我们要明确的一点是,这些字段是不是都来自于squ in啊对吧?那现在我们从squ in获取我们所的字段,那s select from应该是ods层的SKU对吧?那当然这里边我们需要注意一下啊,我们要获取的应该是14号分区的数据,而不是全表的数据对吧?那这里边我们VDT等于2020杠零六杠幺四啊,先过滤出来我们所需的分区,然后呢,从这里边获取我们所需的字段,那实际上这儿呢,我们所有的字段都需要拿到啊,那所以这里边拿到所有字段啊,然后呢,我给它处理一下啊。跟孩子。CTRLVTRLF,我们把这个字段呢,给它竖过来啊。
01:03
这看着美观一点,好,那现在再放回到我们这个文档当中,嗯。好,那现在我们就已经拿到了SQ in for这张表当中我们所需的所有字段了,那接下来我们继续往下走,那第二部分的字段呢,来自于呃,SPU音对吧?那所以接接下来呢,我们去PU音当中获取我们所的字段啊,应该是ods PU音,那同理我们也要拿到2020年6月14号的分区啊好,这里边我们需要拿到一个ID,那需要拿到一个po name OK,那所需的po相关字段就拿到了。那再往下边呢,我们要获取的是啊,这个三级分类的这个呃,这个属性对吧?那OK,我们逐个的去获取,那首先我们先从啊这个ods层的诶贝CAT3里边来获取我们所需的这个数据,那V尔在DT等于2020杠零六杠幺四啊,那这里边我们需要的字段有什么呢?首先有一个是ID,那还有一个呢是名称,那当然这里边我们还得再额外的获取一个字段啊,哪个字段呢,就是二级。
02:09
分类的ID,因为一会儿呢,我们需要使用二级分类的ID去和二级分类表做关联啊,那接下来呢,我们呃,去获取二级分类表当中我们所需的属性,那这里边儿我们以它为模板改一下啊,把这个三改成二,那分区不用改,那同理,这里边我们需要再获取一个一级分类的ID啊,用于关联一级分类表,OK,那接下来我们再继续往下走。哎,来看这儿啊,那这里边我们需要把这个二级分类改成一级分类,那当然这个ID我们就不再需要了啊,只需要一个主键增加一个name就够了啊OK,那现在我们就完成了三级分类表的这个子查询了啊,那接接下来我们继续往上走啊,那再往下呢,还有一个品牌,品牌其实也比较简单,我们获取一下品牌啊,Select啊,然后呢,From,呃,应该是哪张表呢?应该是ods层的T,呃,Base trademark啊,这是我们的品牌表啊,那同理我们也要拿到14号的分区,2020。
03:06
零六杠幺四,那这里边儿我们先拿一个ID啊,再拿一个TM name啊,这就是品牌名称好了,那现在我们就已经拿到了我们所需的大部分字段了啊,那现在只剩下两个字段了,那一个就是平台属性,一个就是销售属性。啊,OK,那前面我们分析过啊,这个平台属性,销售属性呢,我们需要获取的字段有什么?有属性的ID,属性值的ID,属性的名称,属性值的名称,那现在呢,我们先想办法啊,把这几个字段拿到,那拿到之后呢,我们再去考虑,呃,如何将这些内容给它封装到一个结构体数组当中啊好,那现在我们先获取一下,那我们刚才已经分析过了啊,平台属性哎,我们是不是需要从ods层的那个SKU at tr y6从这张表当中去获取,对吧?咱们只需要这一个就够了啊好,那现在我们来一个过滤条件,VRDT等于2020杠零六杠哎幺四,好,那完了之后呢,我们继续往下进行啊,那先拿到我们所需的所有字段啊,首先我们得先拿一个SID,因为这个我们是不是需要用SID去跟我们上的表做关联呀,对吧,他必须得拿啊,那接下来拿谁是不是还有一个ATID,这就是属性ID,那是不是还得有一个value ID啊,就是性。
04:25
泰迪,那继续,那还有一个啥呀,还有一个Y,呃,应该是at tr name对吧?At t哎,Name啊,就是属性名称,那还得来再来一个什么,还再来一个属性值的名称,没错吧,那现在我们已经把所需的字段拿到了啊,那接下来把这个数据查一下,看一看,诶这里边的内容是什么样的?商品的所有的平台属性都位于一个结构体数组当中。
05:09
啊,没错吧,啊,那所以咱们接下来要考虑的一个问题呢,就是如何将这个结果转换成结构体数组的形式。啊,那这个应该怎么做呢。啊,这儿呢,我们可以分两步去做啊,我们可以先将每一个平台属性封装到一个结构体当中。啊,那一个属性对应一个结构体,这个没有问题对吧?那然后呢,我们再使用一个聚合函数,将这些呃,我们的这个呃,每个商品的这个平台属性给它聚合到一个数组当中。啊,那咱们可以分这样的两步去做啊,那当然这两步呢,我们分别需要使用一个函数啊,那第一步我们需要用的函数呢,叫做name的CT啊,那第二一个步骤呢,我们需要的用到的函数叫做collect site啊那接下来呢,我们去看一下这两个函数怎么去使用啊,我们先看第一个啊,就是namect,好,我们现在打开have的官方网站找到namelessruct这个函数啊,我已经提前找到了,大家来看一下啊,这个呢就是呃,一个结构体的构造器,其实就是一个结构体的构造器啊,那这个东西怎么用,其实很简单啊,来大家看后边这个呢,是需要我们需要给他传的参数啊,那咱们传的参应该分别是啥?首先第一个NAME1。
06:23
啊,第二一个VALUE1 name2还VALUE2,那这些传的分别是什么?其实很简单,NAME1指的就是我们第一个字段的字段名,那这就是第一个字段的值,那这个呢是第二个字段的呃名字,那这个呢是第二个字段的值,哎,那我们依次往里边传就行了啊,所以其实很简单啊好,那接下来呢,我们就来看一看,呃,咱这儿具体应该怎么去操作啊,来,我们先找到我们上边的这个建表语句啊,因为我们得到的结构体必须得跟我们建表语句当中声明的结构体的类型保持一致才行啊,那咱们现在给它拿过来啊,钉在这,我们照这个去写一下啊,那我们现在要做的是,是不是就把这四个字段封装到一个这样的结构体当中啊,对吧?那下来咱们就开始了,那首先是name的ru,那首先我们要先入,需要先传入第一个字段的这个,呃,字段名对吧,那其实就是谁,其实就是这个at tr ID没错吧,那接下来呢,我们再把这个ATID的值放进来,那第二一个字段,哎,V value6id,那把字段名放进来,那再把字段的值给它放进来,好。
07:23
第三一个字段,那我们再来一个at tr name对吧?Name me啊,好,往后倒at t name,好,那最后一个字段应该就是value name啊,没错吧,那最后再来一个value name的值啊,OK,那其实现在我们就已经得到了咱们所需的这个结构体了,好,那现在我们查询一下,看一下它现在的结果是什么样的啊。好,大家来看。我们现在是不是已经将每个属性封装到了一个我们期望的诶这个结构体的形式了呀,对吧?那当然我们现在还差一步,我们还需要怎么做呢?哎,还需要将同一个商品它的诶平台属性封装到一个数组当中才可以,对吧?那这个应该怎么做呢?这个其实就很简单了啊,这时候我们因为呃有不同的商品,所以说我们需要分组去统计啊,那所以下边我们需要来一个如谁呢?就SD按照商品分组啊,然后呢,我们需要将上边得到的这个结构体,哎给它通过哎这个set函数来聚合到一个数组当中,那现在呢,我们再来查询一下来回车。
08:26
嗯。好,这个结果已经出来了啊,大家来看一下啊,那这就是我们得到的这个结构体数组啊,大家注意观察啊,这是不是有方括号啊,对吧?啊,然后里边呢,一个结构体作为这个数组的一个元素啊,是这样的啊行,那现在我们就已经完成了平台属性的获取了。啊,那其实同样的道理啊,大家说销售属性跟平台属性的这个获取思路是不是应该是一样的呀,对吧?所以在这儿呢,我们就不再重复的去写了啊,我们打开文档找到销售属性相关的这个,诶circle来拿过来来放在这个位置,好,大家来对比一下,其实这两个写法呢,基本上是一致的,只不过里边呢,这个呃,字段的名和字段值可能略有不同啊,但其实思路是一样的啊。
09:11
好了,到现在为止,我们就已经把商品维度表所需的所有字段都获取到了啊,那其实剩下的工作就比较容易了啊,咱接下来呢,要做的事就是将这些子查询转到一起,然后呢再选择我们所需的字段,最终把结果insert到商品维度表14号的分区,那就完事了啊,其实比较简单了啊,那所以最后一步呢,我们就不再演示了啊呃,我们直接把文档当中的装载语句拿过来,那CTRLC诶,放到我们的笔记当中。来把它替换一下啊。好,这就是我们商品维度表的最终的装载语句啊好,现在我们来看一下,这个是我们刚刚所写的第一个子查询,对吧?从ods SQ in for当中去取数,那这个呢,是第二一个,那依次类推,子查询跟我们刚才所写的都是一样的啊,然后接下来再看诶他这做了哪些工作,那首先呢,在这儿使用了一个呃V4S语法啊V4S语法呢,相当于呃,能够提前声明我们后续所需的子查询,因为咱这子子查询比较多啊,那我们使用VS呢去声明的话,这个结构要看起来要更加清晰一点啊OK,那在这儿我们为每个子查询都起一个别名,第一个叫SKU,那第二一个呢叫做s puu,那第三一个呢叫做呃C3,其实就是那个呃三级分类啊,C2C1等等等等,那在这儿我们就不再主块看了啊好,那这些紫砂群都声明完之后呢,我们再往下看,往下翻往下翻,诶来到了这个位置。
10:41
那现在我们就可以直接从我们刚刚所声明的子查询当中去选择我们所需的结果了啊,大家来看这啊,这是不是就select,然后呢,From from,谁先from SKU,然后其余的子查询是不是都做的是left呀,对吧?因为大家都知道啊,我们现在要往哪张表里写数据,要往商品维度表里写数据,对吧?那商品维度表当中我们的主体应该是SKU对吧?没错吧,那所以说在这儿呢?诶,我们把SKU放在最左边,然后呢,使用呃,让其他的表呢,都与它进行left,那最终我们就能得到我们所需的所有字段了。
11:19
是这样的啊,OK,那照上之后呢,我们选择咱所学的字段就可以了啊,那最终选完之后呢,我们需要再补上一个insert语句,大家注意观察啊,在这儿呢,我们使用的是insert overright。啊,然后后边呢,呃,到哪张表,到商品维度表,那最终呢,再指明我们要写入的那个分区,DT等于2020杠零六杠幺四就可以了,啊好,那这就是我们商品维度表的装载语句。啊,然后大家要注意的是啊,由于我们的业务数据呢,是有历史数据的对吧?那所以说业务数据呢,一般情况下会多一个初始化的操作,也就是他的第一天的装载逻辑跟后续每天的装载逻辑可能是不同的,但是也有可能是相同的,你就比如我们这个商品维度表啊,由于它第一天和后续每天的同步策略都是全量同步对吧?那商品维度表呢,本身就是一个每日全量表,那所以说它的首日装载和后续的每日装载其实逻辑是相同的啊,所以在这儿呢,哎,我们只看这样的一个装载语就就够了,那到了第二天呢,其实我们只需要将这些日期改成第二天的日期,是不是就OK了呀,其余的逻辑是不需要变化的啊好,那这就是我们呃,商品维度表了,装载语句。
我来说两句