00:00
好了,各位同学,那呃,咱们昨天呢,就是已经完成了咱们这个数仓当中的DWD层的两个数据域了啊,一个是交易域已经完成,一个是工具域已经完成了,呃,然后下边呢,我们要进入的是互动域啊,这个数据域啊,那是际互动域之前我们是怎么去设计来着,我们说互动域当中其实就包含了一些什么点赞、评论、收藏,是不是相关的业务过程啊,对吧?呃,当然在这儿了,我们模拟生成的数据,呃,就是并没有这个点赞相关的数据啊呃,咱只有这个收藏还有评价这两个业务过程,所以在这儿呢,我们工具,呃这个互动域当中一共就是有这样的两张事务性事施表,OK,那现在我们逐个的来看一下啊呃,咱们先看第一张,第一张表呢,叫做互动与收藏商品事物实施表,那它所对应的过业务过程是不是显然就是我们用户收藏商品的这个操作呀,对吧?啊,这个大家应该是能理解的啊呃,然后接下来呢,我就不再带着大家呢,去一点一点的去走那个。
01:01
表结构的设计步骤步骤了,我就不带大家去做走那个步骤了啊,我们就直接直奔主题,我们来看一看,就是这张表最终咱设计出来的这个表结构是什么样的,最终的数据状载我们应该怎么做,哎,然后就完事了啊呃,因为这个步骤跟之前都是一样的啊好,那现在我们就直接把这张表的建表语句拿出来,然后呢,咱们来熟悉一下它最终的这个表结构。好,那现在我们先看一下它的表明,这张表的表名呢,叫做d WD interaction favor INC对吧?那注意这个数据域是不是又变了对吧?原原来叫叫,呃,最开始叫trade对吧?第二一个呢,叫tool,这个呢叫做interaction,也就是互动的意思,对吧?然后接下来往下走,下面这部分呢,就是那个业务过程,也就是fairi的收藏嘛,相对比较简单,IC增量分区的标识,好了,那现在呢,我们来明确一下这张表的表结构啊,因为我们没有去走那个设计过程,所以在这呢,咱们明确一下,那这张表其实大家可以琢磨琢磨,你说他每行指代的应该是什么呀?注意是收藏商品事物实表,那里边不应该就是存储的是不是一条一条的收藏操作记录啊,对吧,对吧,比如说一个人收藏了一个商品,那这张表当中就应该有一条数据与之对应才行,哎,这就是他们每行所指的内容,哎,准确的说呢,应该是一行代表一个用户对一个商品的是不是收藏啊,对吧?诶就是这样的,呃,一个一个概念,行,咱就明确了,那接下来呢,我们来看一看它里边具体的字段啊,这个字段有什么呢?主竿来看一下,首先第一个就是user ID,就是维度,对吧?第二个呢,就是SKUID商品啊,这也是一个维度对吧?那再往下呢,Data ID时间,这也是一个维度吧,没问题吧,所以说其实你发现这张表当中它仍然是只有维度,没有这个度量对吧?诶其实想一想也是这么一回事儿,那对于收藏而言,咱们有说,比如说这个人收藏了这个商品,收藏了几件啊,收藏了多少钱,有这种概念吗?是没有的,所以在这儿呢,也是只有一个隐含的度量值次数一对吧,一行数据就表明。
02:57
这个人收藏了这个商品一次,那将来我们可以用这张表里的数据去统计哪些指标呢?比如说统计某个商品被收藏的总次数等等等等,是不是可以通过这张表去算呀?那这个大家需要理解一下好了,那这张表呢,这个字段相对比较少啊,那也比较简单,那咱就说完了,诶,行和列都完事了,那接下来呢,最终明确一下它的分区规划,呃,分区规划呢,已经看到了,是INC对吧?INC是不是就是那种普通的增量分区啊对吧?这个咱就不再多说了,好了,表结构相对比较简单啊,咱快速的就给它走完了,那接下来我们来分析分析它的数据装载应该怎么做,数据装载怎么做呢?还是老规矩,咱首先就得分析什么数据从哪来,对吧?那咱要想知道数据从哪来,是不是就得先知道,就是这个业务过程会对哪张表产生影响啊,对不对,那他会对我们业务系统里边哪张表产生影响啊,呃,对大家应该还有点印象,应该是那个favor ino对吧?那大家对这张表熟悉不熟悉?呃,如果不熟悉的话,那现在熟悉一下,呃,来咱们。
03:57
呃,花一点时间啊,就是大家自己看着这张表,熟悉熟悉,这张表字段比较少,相对比较简单啊,看看能不能看懂,就是还是得明确每行是什么列,都是啥含义,哎,看一看能不能看明白啊。
04:10
一行代表的应该是什么?是不是应该就是一个人对一个商品的一次收藏操作呀,对不对,那当然也不单纯的是收藏操作,因为这里边大家可能会看到这样的一些字眼,什么是console,对吧?Is console,什么console time console是不是就是取消的意思啊,对吧?那所以说这一行数据好像也不是单纯的一个收藏操作,对不对?那这一行数据到底是什么含义呢?那接下来呢,我们得把这几个字段的含义明确了,那这行的含义咱才能明确来,我们先来把这个字段逐个的看一下啊,首先第一个字段UID,这个不用多说对吧?第二一个SQID也不多说,第三个呢,S po,实际上这个s po ID,虽然这是空啊,呃,但是如果这有值的话,大家应该能理解,你说这应该算作一个什么操作,是一个冗余吧,对不对,因为理论上我根据SKU是不是就能拿到那个s puu啊,对吧,是这样的,所以这是一个冗余的存在啊,这个不用管它,然后往后走,后边呢,有一个is conso,就是是否被取消了对不对,那OK,那你会发现有零,有一是零的话,那就。
05:14
证明这个人收藏了这个商品,然后目前的状态是没有取消是还是收藏的状态,对吧,那像这种诶变成一了,那就意味着什么呢?是不是原来这个人他收藏过这个商品,但是目前的状态他是不是已经取消量对吧?就是理论上啊,取消收藏应该会对应一个什么样的操作呢?删除操作对不对,你取消成藏里边会有一个删除操作呀,对吧?但是我前面讲过,就是我们业务系统当中的表呢,就是很少会有真正的物理删除,它很少会有真物,一般情况下都是加一个删除标记,对吧?其实在这儿这其实就是那个删除标记,就和咱那个购物车表当中这个一字order的作用是不是应该是类似的呀?对吧,这个理解一下啊,好了,那接下来继续往后看,这儿呢有一个create time,那这呢还有一个cons time,那家可以猜一猜,你说这个所谓的create time应该是啥意思?
06:04
应该就是写入这张表的时间对吧?那后边这个cons time那啥意思呢?取消收藏的时间对不对?你会发现是一的,它就有cons time是零的,是不是就没有cons对吧?诶这个大家应该是能够看懂的,好了,那截止到现在这张表的字段咱们都讲清楚了,那完了之后呢,我们来明确一下它每行到底是什么含义,他其实这张表一行就代表一个什么,就代表一个人对不对?对一个商品的一个收藏或者是取消收藏的操作,是不是一行表这一行数据当中,这个收藏和取消收藏都能体现出来呀,对不对,这一点大家应该得搞清楚才行。好了,那接下来呢,我们继续往下进行,这张表的表结构咱们熟悉了,但是呢,对于我们数据仓库当中的建模而言,光熟悉它的表结构、行和列是不够的,对吧,我们还得熟悉什么来着啊,就是得熟悉,就是我们的业务过程是如何对它产生影响的,对吧?那咱们现在讨论的业务过程是谁?是那个收藏对不对?好,那现在问题来了,你说收藏这个业务过程会对他产生什么影响?
07:04
其实根据这张表的表结构,咱们大概也能猜出来,对吧?你比如现在有一个人收藏了一个商品,你说这张表的数据会咋变呀?应该是ins色的一条数据,对吧?那数据刚insert进来之后的状态是什么样的呢?其实应该是这种吧,对不对?OK cons是零,然后cons time是空,这是刚进来的状态,OK,好,这就是我们收藏对这张表的一个影响操作的。好了,那既然咱们提到了收藏了,那我们顺便再考虑考虑这个取消收藏它是怎么影响的,取消收藏是如何影响这张表的,是update吧,应该对不对?他就应该找到之前的收藏那条记录,然后呢,将if console至为一,将conso time是不是至为就是刚刚取消的时间呀,对不对,这是取消收藏对这张表的一个影响逻辑,虽然我们这儿呢,没有去建那个取消收藏的事物时表,理论上你要是需要分析取消收藏这个操作,那是不是也可以建一张取消收藏的表啊,对不对,但是我们没有建啊,如果要建了的话,你就得根据刚才这个update的逻辑去寻找取消的操作才可以,这一点要理解一下啊,行,那在这儿呢,我们就先。
08:04
关注收藏就完事了啊OK,好了,那这张表的结构以及它的变化逻辑咱就都熟悉了,那接下来呢,我们分析分析就是我们这个数据装载的具体的这个思路是什么样的,那这张表的数据装载我们仍然是得分一个首日和每日,对吧?首日我们需要处理大量的收藏的历史操作没没问题吧?好,那现在来分析分析这个首日咱具体怎么做,首日咱拿到的数据是不是跟这是一样的,对吧?好,那问一下大家,你说我怎样从这一堆数据当中找到那些历史的收藏。我这一行能不能代表一个历史的收藏操作呢?能不能代表应该是可以的,对吧?哎,咱得知道,就是这张表当中,我这一行数据只有什么情况下才会被插入进来呢?只有收藏的时候才是不是才会被插入进来,对不对?那所以说有一条数据,那就意味着原来是不是有一个收藏操作呀,对吧?OK,那这个收藏操作是什么时候发生的呢?这个通过谁能看出来cur time是不是就代表那个收藏的事件呀,对不对?所以说我们要想拿历史的收藏作操作,我直接拿这张表当中的每行数据呢,就完事了,一行那就代表一个收藏操作来,这是首日的时候啊,当然首日我们有历史操作,我们就得用动态分区,把数据写到实时表多个分区,对吧?这首日,那每日呢,每日我们拿到的是不是就不再是这些数据了,而是insight update操作对吧?那我们要的应该是哪种iner操作对不对?那直接写到当天分区那就完事了,诶这其实就是这张表的一个大致的装载逻辑啊,行逻辑咱搞清楚之后写三个是不是就简单了,对吧?这个我就不再大家一点点写了啊,咱直接把文档当中。
09:37
最终的结果拿出来啊,过一下就行了,OK,其实现在大家对这个呃事值表的这个相关的一些内容,是不是这个套路就已经比较熟悉了呀,对吧?诶来,那我们把它拿过来,呃,表示结构的设计啊,数据装载啊,基本上都是一样的套路啊好,那现在我们先看首日装载,首日的时候呢,我们看它是怎么做的,直接select,然后的from,说刚刚我们看到的favor那张表,对吧?第一天拿全量分区,呃完之后呢,需要做一个简单的过滤,注意啊,是不是没有做其他的过滤,这仅仅是把那两条空数据给过滤掉了,对吧?相当于拿到了全表数据,拿全表数据之后呢,我们对它进行一个简单的处理,注意观察,那咱们这个日期应该是什么日期,是create time那个对吧?诶,它其实就是收藏时间了,好了,那拿到它之后呢,再根据它去做一个动态分区,把数据呢写到实时表的多个分区,那就完成了,诶这就是首日,那每日呢,相对更简单,我们往下走。
10:26
每日的时候呢,咱只需要找什么就行了,找15号这一天的收藏操作就完事了,对吧?那从哪个分区长呢?从这张表的十五二分区长就行了,那它的十五二分区里边呢,是insert加update的操作,而我们只需要insert操作没问题吧?OK,好,拿到insert之后呢,把数据处理一下,最终写到十五二分区,诶,搞定了,哎,这就是收藏这个业务过程相关的表咱就讲完了啊,其实相对比较简单啊,好了,完成之后我把这个视频停一下啊。
我来说两句