00:00
好,那接下来我们看加购时表啊,那加购时表呢,咱做的是一个周期型快照时表啊,那大家还记得周期型快照表的特点吗?啊,那周期性快照时表呢,它通常情况下是不会保留所有的业务操作的啊,而只保留固定时间间隔的数据。那举一个简单的例子啊,那就以加购车为例,对吧,那咱们加购物车这个业务最明细的操作应该是什么呀。最明细的操作,那是不是就应该是加购车或者是减购物车的这样一个操作呀,没错吧,那我们并不关心他这个具体的加减购物车的操作,而只关心那这一天结束的时候,每个用户他的购物车当中有什么商品。那所以说在这儿我们就不需要去保留那些最明细的加减操作了啊,而只保留诶每天啊,咱们这个结束的时候,用户的购物车当中有什么商品就可以了啊,那所以在这儿呢,诶,我们加购这个业务呢,就做了一个周期型快照实时表,OK啊,那接下来我们看一下加购时时表,它的这个表结构啊,那首先我们先来看一下它的每行数据指来的是什么。
01:09
啊,由于我们并没有去保存所有的加减购物车的操作,那所以说这张表当中它的每行数据并不是一个加减购物车的操作,对吧,而是什么呀,而是一个用户他的购物车当中的一个SKU。啊,那这个呢,就是加购物车时表的每行数据啊,OK,那接下来我们再来看一下它的这个具体的字段啊,那加购物车时表当中字段都有哪些呢?我们把这个建表语句拿出来看一下。CTRLC放到data grave当中啊,放在这儿来我们一起来看一下它的字段,那同样呢,它的字段也分为两类,一类呢是维度外键,一类呢是度量值啊,咱先看维度外建,那这里边有用户,有商品,没错吧?那还有啥呀?是不是还应该有一个时间,没错吧?在这时间呢,我们就以cur time作为它的诶时间外键,OK,那接下来我们再继续往下进行啊,那除了这个维度外键,那还有啥呀?是不是还有度量值啊,对吧?还度量值,那的度量值应该是谁呢?我们来看一下那首这里边有一个SK对吧?这个是为一个度量值,没错吧?那大家还有一个地方要注意一下,就是这儿这个cut price。
02:24
那这个是不是也是一个数字类型的字段对吧?但是要注意这个字段它能作为度量值吗?注意啊,这个是不能作为度量值的啊,为什么简单给大家解释一下啊,Price呢,指的是商品加入购物车时的价格,对吧?就相当于是这个商品价量作为度量值了呀,对吧?啊,这个一定要注意啊,一般情况下单价是不能作为度量值的啊,它俩乘一下就可以了。这是大家需要去注意的一个地方啊,OK,那这就是加购物车时表它的主要的字段啊,OK,那这个完了之后呢,我们再继续往下进行啊,我们再来看一下这张表的分区规划啊,OK,我们打开这个文档来看一下,那这个呢,就是加购物车市表的分区规划啊,那它的分区规划和我们前面讲的三个事物型时表的分区规划可就不一样了啊,咱们来注意观察一下加购物车时表它呃当然也是按天分区啊,一天一个,但是它每天的分区当中存储的数据跟前面讲的是不一样的啊,那加购物车是表每天的分区里存的是什么呢?是当天的全量的购物车数据。
03:38
啊,因为咱们这做的是什么,是周期型快照指标,对吧,相当于每天一个快照,每天一个快照,那所以他每天的分区就相当于是一个全量分区。OK,那这就是加购物车时表的表结构。好,那接下来我们看一下这张表的数据装载啊,它的装载逻辑呢,其实也非常简单啊,那现在我们还是先看一下它装载时的数据走向。
04:00
来看一下啊,那这儿指代的就是ods层与加购物车相关的业务表,那下面呢,指代的就是DW层的加购物车实时表啊好,那假定现在就是2020年6月14号,那看一下我们能从OD层拿到什么数据,那显然就是全量数据对吧?啊OK,那拿到全量数据之后,我们应该把数据写到DW的这个实表的哪个分区里边呢?来思考一下啊,那写到哪个分区,是不是也得由下边这个实时表的分区规划决定啊,没错吧,那加购物车时时表我们的分区规划是什么样的?按天分区对吧,每天的分区里边存储当天的全量数据对吧?那所以说咱们这儿拿到全量数据之后,是不是直接写到对应的这个分区里边就可以了,对吧?也就是写到14号分区就行了啊OK,那时间推移我们来到了第二天对吧?那第二天我们从ods层拿到的仍然是十全量的数据。啊,那所以说我们要做的事儿,是不是也是把全量的数据写到第二天的分区就可以了,没错吧,那大家能够看到啊,实际上我们第一天和第二天以及后续每天做的操作都是同都是一样的。
05:05
啊,OK啊,那这就是呃,加购物车时表装载时的这个数据走向啊好,那接下来我们再来看一下它装载的circle语句啊,那刚才也说了,首日跟每日状态的逻辑是相同的,对吧?所以在这儿呢,我们看一个就可以了啊,因为这个相对来说比较简单啊,所以在这儿呢,我们就不再手写了啊,我们把这个结果拿过来一起看一下。啊,那这就是它的装载语句,来大家来看一下啊,那首先我要明确,那往这张表当中导数据,咱们主要的数据来源是哪啊,是不是ods层的car啊,对吧?然后大家能够发现啊,那OS card这张表就已经能够满足我们所有的需求了,那所以说我们就不需要再跟其他的表去做关联了,没错吧,那咱要做的呢,就是从这张表当中获取当天分区的数据,然后写到d WD card in啊这个表的当天的分区当中。就完事了,这就是他的首日装载,那每日装载呢,跟它的逻辑是相同的,唯一不同的就是这个日期啊,在这儿我们就不再去看了。
我来说两句