00:00
好,从本节开始,我们就要搭建dim层了啊,那dim层当中存放的是什么?大家还能想起来吗?啊,Dim层当中存放的是维度模型当中的维度表啊,之前我们分析过啊,维度模型里边的表分为两类,一类是事实表,一类是维度表,那维度表那我们就放在dim层,那事实表呢,将来我们会给它放到DWD层啊,那现在我们要做的就是这个dim层啊维度层啊好,那我们维度模型当中的维度呢,一共有六个啊,那分别是商品优惠券、活动地区、时间和用户维度啊那现在我们先从第一个商品维度表开始啊好,那现在我们来分析一下商品维度表的表结构是什么样的啊,那同样从这样的几个方面去看啊,第一个就是每行数据是什么,第二个呢就是字段如何确定,那第三一个呢,就是它的分区规划是什么样的啊,首先我们先来明确第一点,那就是商品维度表当中的一行数据是什么。
01:04
啊,它的一行数据呢,是一个SKU,这个大家一定要注意一下啊,因为我们下单的对象是不是都是SKU啊,对吧?那所以商品维度表当中一行数据应该是一个SKU,这个一定得注意,那好,那接下来呢,我们看第二个问题就是它的字段啊,那商品维度表当中应该包含哪些字段呢?啊,其实道理很简单啊,商品维度表当中就应该包含所有的商品属性。没错吧,那商品的属性我们去哪儿找呢?啊,那这个我们是不是只能去业务表当中去找啊,对吧?哎,我们需要去业务系统的数据库里边去寻找所有跟商品相关的表啊,然后呢,再从里边去寻找我们所需要的商品属性啊,那接下来呢,我们去看一下啊,那在这呢,我准备了一个PPT啊,那这个PPT当中啊,所展示的表就是所有与商品相关的表啊,那咱们简单看一下啊,那这里边的核心表就是我们的SKU。
02:08
啊,那与之相关的表都有谁呢?来左边这有一个品牌表,那这呢有一个PU表,那下边的是分类表啊,那右边这部分呢,呃,分别是平台属性相关的表和销售属性相关的表啊OK,那表都拿到了,那接下来接下来咱们就来分析一下啊,那最终商品维度表当中应该包含哪些字段啊?首先那是不是必须得包含SKU的基本信息啊,对吧?那也就是说我们需要用到这个表当中的字段啊,那PU信息是不是也得包含在我们的商品维度表当中啊,对吧?那所以说这张表咱们也需要s PU in啊,那品牌信息那咱需不需要呢?那肯定也需要,那所以说这个base trademark品牌表也需要啊,那分类信息我们需要不需要呢?那肯定是需要的,那所以说这三张表那也需要。
03:01
啊,那再有呢,就是我们后边的平台属性和销售属性了啊,这两个属性呢,相对来说要复杂一些啊,那我们到底需要哪张表,后续我们再进行分析啊好,那现在基本上我们就能够明确下来了啊,就是我们的商品维度表当中应该包含哪些字段啊,那首先需要包括SKU的基本属性,那需要包含SPU属性啊,品牌属性,分类属性啊,还有它的呃,销售属性和平台属性。OK,那接下来我们看一下它的建表语句啊,具体看一下它到底都有哪些字段,来,我们先把这个建表语句粘出来啊,CTRLC啊,放在我们这个笔记当中。DM层,那这个呢,是第一个维度表,应该是商品维度表啊,OK,那现在见面语句拿过来,呃,我们一起来看一下它具体的字段到底都有哪些啊。好,第一个字段ID,那这个ID呢,实际上就是skidd啊好,那下边啊,商品价格,商品名称,商品描述啊,商品重量,是否在售等,那这些是都是ku的基本信息啊,对吧?或者叫做基本属性,那接下来再往下走,呃,PU ids PU name,这个是不是都是的SPU属性啊,那再往下呃,三级分类ID,三级分类名称啊,二级ID2级名称,一级ID一级名称,这是不都是它的分类属性啊,对吧?那再往下走,品牌ID,品牌名称,哎,这是不是属于它的品牌属性?
04:33
没错吧,那接下来再往下看啊,下边还有两个字段。那一个呢,是平台属性,这个注释在后边啊,大家看啊,这是平台属性,那再往下呢,这个是诶销售属性。那这个字段首先是不是跟我们刚才所分析的是一致的呀,对吧,那包括了我们刚才所提到的啊,这个基本属性属性,品牌属性,分类属性,哎,平台属性和销售属性,哎,都包含在这个建表语句当中了啊好,然后大家来跟我一起看一个地方啊,看哪看一下这。
05:06
这两个字段有有点特殊,大家应该已经发现了对吧?那特殊在什么地方啊,其实主要就特殊在它的这个字段类型上啊,那我们来仔细看一下它的字段类型是什么样的啊,是结构体数组对吧?那最外层是AR,那内层呢,嵌到的是结构体。啊,OK,那咱们可以思考一下啊,为什么这个位置我们要把平台属性和销售属性的这个字段类型设置为结构体数组呢?者是销售属性是不一样的啊,甚至连个数都是不一样的啊,那所以说我们就没有办法像其他的这些普通属性一样啊,为每个属性都单独的去设立一个字段。
06:01
啊,为什么不能呢?咱们举一个例子啊,假如说我现在有一个商品A啊,商品A假如说一共有三个平台属性,那分别是属性一,属性二,哎,属性三,那假如我们为每个属性都单独设立一个字段的话呢,那这时候我们就需要为这张表哎增加三个字段,对吧?啊但是大家要注意了啊,这三个字段它能够适用于所有的商品吗?啊,这个不一定啊,为什么?因为我们刚才提到了不同的商品,它的平台属性或者销售属性是不同的,对吧?那假如说我现在又有一个商品B,那它呢,一共有五个平台属性,那OK,你刚刚设立的三个字段是不是就不能适用于商品币了呀?对吧,那所以说这样一来的话呢,我们实际上确实是不能为这个每一个平台属性或者是销售属性都单独去设立一个字段的啊,那OK,那所以说我们这儿怎么去解决这个问题呢。啊,这时候我们就考虑到诶为它的平台属性和销售属性呢,去设立一个这样的结构体数组,这样的一个类型啊,那结构体数组就能解决我们的问题吗?诶确实是这样的啊,那这里边咱们怎么做呢?诶其实这样诶我们可以为每一个商品的每个平台属性或销售属性啊,都封装为一个呃这个结构体,那这里边儿呢,有属性的K啊,有属性的V啊,有属性的K,有属性的V。
07:25
啊,那然后呢,我们再把每一个商品的所有的平台属性,或者是销售属性呢,放在一个数组当中。啊,那这样一来的话,我们只需要为每个商品来增加这样的两个字段就够了,那不管这个商品它有多少个平台属性,有多少个销售属性,那我都可以放到这样同一个结构体数组当中。啊,是这样的,这就是我们这两个字段,哎,它的这个设计的一个思路啊,这是大家需要去注意的一个地方,OK,好,那现在我们就呃完成了这个表的这个字段的这个说明了,好,那接下来我们再看一下这张表的分区规划啊,那我们打开文档往下翻,嗯,这个就是商品维度表的分区规划,那很明显在这儿我们是按天分区啊,每天一个分区对吧?啊好,那每天的分区当中存放的是什么数据呢?啊,就是当天的全部数据。
08:20
啊,实际上我们这个商品维度表啊,它是一个全量维度表啊,相当于是每天一个全量的备份,每天一个全量的备份啊OK,这就是商品维度表的分区规划好,那最后呢,我们再呃看一下这个商品维度表的这个数据存储啊,我们打开这个建表语句啊,看一下最后。大家注意观察啊,那从DM层开始,我们跟ods层的存储格式就不一样了啊,那ods层呢,我们的存储格式是纯拉泽罗文件对吧?那从地层以后,我们所有的表,它的存储格式都是盘馈列式存储加拉泽罗压缩啊,这个呢是大家需要去注意的地方,好,那这就是我们呃第一张维度表商品维度表的建表语句。
我来说两句