00:00
呃,好,各位同学,那咱接下来呢,看一下我们的第三张维度表,第三张维度表呢,我们称之为活动维度表,呃,这个活动维度表其实大家可以先琢磨琢磨啊,你说这个维度是跟哪个业务过程相关联的,哪个业务过程可能会跟咱们这个维度有关系,其实主要是谁呀,主要是下单吧,对不对,就是咱下单的时候,我是不是得知道你本次下单你参与了哎活动没有,对吧?如果参与了,你参与的是哪个活动,咱是不是得明确这个事儿了,对吧?所以他应该是下单这个业务过程的一个维度,诶这一点咱要给他搞清楚啊。好了,那接下来呢,我们就还是老规矩,咱们先来设计这张表的表结构,哎,再来想一想,就是这张表的数据装载应该怎么做,先来设计表结构,那设计表结构呢,我们首先要做的应该就是什么来着,是不是确定所谓的主维表和相关为表啊,对吧?哎,我们需要找到诶,那业务系统当中与之相关的表,那大家想想业务系统里边跟它相关的表那应该都有谁呀?其实业务系统对应的是不是就是ods层的表,对不对,没没问题吧,所以在这呢,我们就不再打开那个业务库了啊,我们直接看ods层的表就行,那ods层里边与活动相关的表都有谁。
01:12
其实是不是很清楚对吧,是不是就他俩对吧?一个是activity in inform,一个是activity rule,这两个是不是都是跟活动相关的呀,对不对?那接下来呢,咱们来分析分析这两张表啊,首先这两张表结构大家现在还记得不?我记得之前带着大家去熟悉这个采业务系统当中那个数据库的时候,咱不是就最开始就以他俩为例去熟悉的表结构啊,对吧,还能想起来吧,来简单回顾一下啊,Activity in for这张表的表结构是什么样的行列?这张表每行指的应该是一个啥?就是一个活动吧,对吧,那那完了之后里边有哪些信息呢?其实就是一些活动的基本信息,包括什么?活动的名称,活动的类型,这个类型在这儿是不是也是编码啊,对吧?然后往后走,活动的描述信息啊,活动的开始结束时间等等等等活动的基本信息,好继续往下走,Activity物,那这张表它的表结构大家还记得吗?
02:07
首先需要明确的是这张表每行指来的是什么?是一个活动里边的一条规则吧,对不对,OK,这个一定要搞清楚啊,好了,然后你注意观察一下啊,你比如说咱们以谁为例,以他俩为例,你注意观察就是这两个规则,他们的activity的ID是都是一啊,对吧?这意味着什么呢?意味着这是不是一号活动的两个规则呀,那么一个活动是不是可能会有多个规则,哎,这一点要搞清楚,OK啊好,那接下来呢,我们看看这个表里的这个字段大致都有什么,刚才已经看过了,活动ID用来关联活动表,那这块呢,这块呢也有一个activity type,实际上这个type啊,它在这应该算作是一个什。也是冗余吧,对不对,为啥?因为我根据activityd找到activity in for里边是不是有这个type呀,对吧?所以说我放在这个位置也相当于是一个冗余啊,OK,我们继续往后看,那后边呢,什么condition amount condition number,这就是在描述什么,描述规则吧,对不对?描述这个活动的优惠规则啊,OK,我们继续往下走,那下面呢,还有一个benefit level,也就是一个优惠级别,什么叫优惠级别?很简单,因为一个活动下边是不是有多条规则呀,对不对,你比如说在这儿呢,我们有满1万减500,满一万三减700对不对?OK,那所以说我这样呢,是不是有一就是一级优惠跟二级优惠啊,对吧,优惠级别就是这个意思啊,好了,那这一点,这样一来的话呢,这两张表咱们就都熟悉了,熟悉之后呢,其实我们相当于就呃,相当于就可以去做一个什么事儿了呢,是不是确定这个主和从啊,对吧,看看谁是主为表,谁是相关位标对吧,大家想想你说他俩谁是主位标,谁是相关。
03:40
分析分析。谁是主维表,谁是相关为表,其实咱们之前讲过啊,就是啊,我们这里边有一个就是大致的一个规律,对吧?是不是力度小的往往是那个主维表啊,对不对?那这里边谁是力度比较小的那位,显然是规则吧,规则表是不是力度比较小的那个,所以说实际上咱们这儿的主位表呢,应当是这个规则表,哎,这1.1定要搞清楚好了,那主位表相关位表咱都确定了,那接下来可以干啥了,就是不是设计这个表的结构了呀,对吧?呃,设计表的结构呢,还是行和列呗,对吧?那你说我们这个活动维边每行指来的应该是一个什么呢?是不是跟这个主为表一样就行了呀,对吧?那主谓表一行就是一个规则,那我们最终的维度表一行,它就是一个规则,诶这个一定要搞清楚,完了接下来我们继续往下进行,那完了之后是不是可以继续去分析咱这上面的这个字段了呀,对吧?OK,那字段咱们也来明确一下,字段其实主要就是怎么做,是不是来自于这两张表啊,对吧?那当然呢,一部分字段我们是可以直接拿的,当然有些字段呢,我们需要去加工处。
04:42
理一下对吧,那比如说哪块咱们可能需要加工处理一下呢?比如说规则这个跟优惠券那个是不是有点类似啊,对吧?规则我们需要加工处理一下,那还有谁呢?比如说我们像这种什么什么类型,咱是不是都得去给他找一个这个编码的一个解释啊,对吧,找一个文字说明啊,是这样的,这实际上就是我们需要去做的一些基本工作,好了,那也要到目前为止,咱们这个表的一个设计思路基本上就完事了,行是什么大致清楚了,字段到底怎么来,基本上也清楚了,OK,那咱接下来呢,就直接把文档当中的建表语句拿出来,咱们一起看一眼就行了啊,这个咱就不再一点点去分析了,来,CTRLC拿过来。
05:18
好,那就放在我们这个笔记当中啊呃,后边呢,我会把这个笔记就是每天给大家去呃,去发一下的啊呃,昨天忘了发了,那后边每天都会发啊好,那接下来咱们继续往下进行,首先我们先来看一下它的表名,这个表名呢叫做Di m activity负是不是就是维度层,然后呢,活动维度,然后负表示它是一个什么,每日全量快照的一个维度表,对吧?诶这个点搞清楚好,那接下来咱继续往下走,下面呢,我们来明确一下,就是这张表的行列,还有最后还得加上一个分区,对吧?先看行啊,这张表呢,每行现在指的就是一个什么,就是一个活动规则,你看这是不是就有一个活动规则的ID啊对吧?原来表示这一行数据,好了,接下来继续往下呢,下面呢,我们来看看它具体的字段都有哪些,呃,这个字段呢,呃比较多,但是咱们都知道他们是不是主要就是来自于我们刚刚看到的那两张表啊,对吧,那现在咱们这样啊,我们把这张表的字段跟原表的这两张表进行一个对比,然后在这儿呢,我们就能看出来我到底给它加了什么字段啊,咱们对比一下。
06:18
来,我把这俩表呢都给它展开,呃,然后呢,我们左右对照着去看一下啊,那首先呢,我们先看一下,诶咱们前面的这几个阶段,呃,Activity did弱ID对吧?这个应该是来自于哪张表啊,肯定是来弱这张表是不是应该就这个ID啊对吧?比较简单,接着往下走,Activity TD活动ID当是活动ID呢,你可以说它是来自于这边的,也可以说它是来自于这样的,是不是一样的呀?对吧?因为咱们往这上面里装载数据,是不是他俩需要关联,就关联的字段不就是活动ID嘛,对吧?所以说来自于哪都行啊OK,继续往下走,活动的名称这个是不是肯定是来自于咱们这个活动表,对吧?那下面的是活动的类型编码,这个类型编码其实对应的就是哪个字段,就是activityd type这个字段吧,对吧,当然这儿有type,这是不是也有type呀,对吧,来自于哪都行,然后下边这个位置。
07:06
这是我们自己给他加上的一个编码的解释吧,对不对,OK,这个稍微的注意一下,那当然这个字段它应该是来自于哪张表啊,自然表吧,这个就不多说了啊,接下来往下走,活动的描述信息,开始时间,结束时间,创建时间,这些其实是不是都是来自于这儿的呀,对吧,这个就不再一一对应了啊,接着往下走,那这个是不是就是活动的,呃,这这个规则那几个字段呀,对吧,这个来自于哪儿,来自于规则表是不是对应的,正好是他们四个呀,对吧?然后往下走这个字段。原表里边有吗?没有,这是我们自己给它加工出来的,对吧?Benefit rule这个怎么去加工,是不是还是使用一个k one去拼接一下就完事了,对吧?比较简单,这个就不再多说了啊,接着往下走,这个是benefit level来自于这个位置,诶,你会发现实际上这张表的字段呢,就是来自于刚刚我们提到的这两张表啊,OK,这个咱们基本上自己分析也能分析出来啊好了,那到目前为止呢,我们这张表的行还有列就说完了,最后明确一下它的分区,那它的分区是不是仍然是一个每日全量的分区规划,对吧?一天一个分区,每天的分区存放当天全部的活动维度信息,对吧?就是这么个逻辑啊,行了,那截止到现在呢,大家应该对这张表的表结构已经比较熟悉了,呃,表结构熟悉之后呢,那接下来呢,就是它的数据装载了,那数据装载呢,呃,我单独的录一个视频啊。
08:22
呃,好了,那这个活动维度表的建表语句,也就是它的表结构咱们就熟悉了,那接下来我们要做的就是它的数据装载了啊,当然在做数据装载之前呢,我们还是要先明确一下啊,就是这张表的数据我们也不是说只装载一次就行了,对吧,我们是不是也要每天都往里边装载对吧,每天我们都要往里边去装载一份截至当天的这个什么呀,就是全量的活动维度对吧?那所以说我们这个最终写字的时候呢,那咱们肯定是怎么写呀,肯定是怎么办,是不是也应当是每天从哪儿从我们ods层的这两张表当中拿到,是不是当天的分区就够了,对吧?因为他俩是不是也是每日全量的表了,对吧?诶拿到当天分区之后呢,怎么做?
09:03
之后是不是应该是把它俩进行一个简单的处理对吧?处理完之后是不是把数据写到我们这个维度表了,当天的分区里边就行了,对吧?诶实际上你会发现我们这些维度表对吧?它在进行装载的时候,它都有一个相同的规律,这什么规律呢?就是每天都是从ods层与之对应的表里边拿一个当天的分区,然后呢,对这个分区的数据处理,处理完之后放在咱们这个分区里边对吧?都是分区,对分区的这个稍微的理解一下,当然这是谁的特点呢?这是咱们这种每日全量快照表的这个特点,对吧?但是你拉链表你说装载的时候还是这么去做嘛,拉链表可能就不是这样的了,对吧?诶这个拉点到时候怎么做,到时候咱们再说啊,行了,那这张表的这个大体的一个装载的,呃,这个逻辑咱们就定下来了,那接下来呢,我们就来看一下这个circle最终怎么去写,这个circle我们就不再手写了啊,咱们简单分析分析,看看这个咱们怎么做就行了,来,咱们现在假定我们需要开始写circle了,你看看这个东西怎么写,呃,这个当然每天都要执行,我们也是写一个就完事了啊,我们写一个2N20杠。
10:04
零六杠幺四的,因为每天逻辑都是一样的啊好,那你说这个词和咱们大题应该怎么写啊,首先是不是得先写一个子查询对吧?第一个子查询应该是从哪上面来取数,是不是从这张表里取啊,对吧?那完了之后呢,我们需要给它获取一个分区,拿到12分区,那第二列查询呢,是不是应该从这张表里取数,咱这是不是也要拿到是不是十四二的分区啊对吧?那之后呢,还要不要写其他的自查学。还得再写一个吧,对不对,还得来一个这个自联表对不对,OK,那自联表也是全量表,我们也是拿它一个14号分区之后,是不是需要对他们仨进行一个关联操作对不对?关联的时候咱这儿以谁为主啊,其实就还以那个主为表为主,对吧?也就是以benefit入为主,那这时候我们其实可以把它放在最左边,然后呢,让另外两个跟他做一个left join是不是就行对吧?那join完之后呢?呃,我们就能够拿到我们所需的绝大多数的字段了啊,包括这个活动的这个类型的名称,比如那个编码,对吧,咱们能拿到,那当然了,有一个字段我们需要做一个简单的处理,也就是谁呢?是是这个benefit菲的弱对吧?这是我们自己加工的对吧?这个加工的逻辑应该是什么?是不是也应该是根据我们那个活动的类型,对不对,去干啥呢?是不是去拼接我们这个不同的字段呀,对吧,使用一个case when是不是就完事了,对不对,其实基本上就是这样的一个逻辑,所以这个三个呢,相对比较简单,我们就不再一点点写了,那接下来呢,我们把文档当中最终的装载语就是拿出来,咱们一起看一下就行了,啊来,往下走。
11:30
CTRLC,诶咱们给它拿过来,拿来之后呢,简单的过一下这个最终的三号啊,看跟我们刚才所说的是不是一样的,首先第一个这是我们刚刚提到的规则表,对吧?拿到它十四二的一个分区,那完之后走往下走,这是in那张表说也是十四二分区啊对吧?那下面呢,是那个字典表,也是十四二分区啊这个呢,其实就没什么可说的了,好,那最后呢,来跟他是不是做一个这个lefto,那就完事了,对吧?最终再从里边选择我们所需的每个字段,诶再把这个活动的规则呢,给它拼接一下,诶那就完事了,诶那这就是咱们这张表的一个数据装载的,诶完整语句啊,相对也比较简单啊来完事之后视频我给它停一下。
我来说两句