00:00
呃,好了,各位同学,那咱接下来呢,就正式开始进入到维度建模理论的学习了啊,那首先呢,我们先从事实表开始,那现在呢,来我们先来对这个实时表呢做一个基本的了解,来我们看一下文档当中的这个概述这一小节啊,看他这儿是怎么说的,他说事实表作为数据仓库维度建模的核心啊,这个核心怎么理解呢?其实你看上面这张图基本上也能看出来,对吧?整个实时表是不是就是位于维度模型的一个核心的位置啊,对吧?哎,相对来说是比较重要的啊好,那接下来咱继续往下进行,那它呢是紧紧的围绕着业务过程来设计的,业务过程这个概念咱们已经提到过很多次了,对吧?大家一定要把它当做一个特殊的概念去对待,下单取消订单付款对不对,然后什么退单退款,这是不是都是我们电商这个业务当中的业务过程啊,对吧,它是一个一个原子的操作事件,这个一定要搞清楚好了,那接下来呢,我们就继续往下边进行,我们来看一看就是40秒当中。
01:01
通常包含哪些内容对吧?就是将来你会建一张实表对吧?这个事实表有哪些内容呢?我们来看一下文档是怎么说的,他说事实表当中啊,会包含什么呢?会包含与该业务过程有关的维度引用啊怎么个意思呢?大家都知道一个实时表是不是会与一个这个呃业务过程是相关联的呀,对吧?那在实时表当中呢,就有一部分的信息是什么呢?是与该业务过程相关的维度引用,OK,那还有一部分是什么呢?以及该业务过程的度量,诶就这两部分,一个是维度引用,一个是度量,诶,那这俩东西分别是什么呢?哎,我先不解释,咱们去看一下上面那张实时表,大家应该就能够看明白来。首先各位同学,我们看一下这是不是就咱那张实时表啊,对吧,那实时表当中你注意观察一下它的这个字段,咱们主要看字段就行,你看字段,字段是不是可以分为这样的两类啊,大致对吧,那一类呢是什么?你往上看这都是啥,各种各样的。
02:01
ID对吧?这个ID其实是用来干什么的,是不是用来关联外边这一圈维度表的呀,对吧?OK,那所以说这一堆的维度,外界我们就称之为什么呀,就是所谓的维度引用对不对?那你比如说举个例子,Product ID是不是引用了我们这个产品的信息啊,对吧?那这个customer ID呢,引用了顾客的信息等等等,这就是咱们所谓的维度引用啊,除了这些维度引用,除了这些维度外线呢,我们其实这个师表当中还有一个字段,对吧?那这个字段咱们看一下是什么东西,叫做sales amount对吧?这其实就是那个订单的金额,销售的金额,对吧?OK,那实际上这个字段我们就称之为什么呢?什么东西就称之为度量,哎,是这样的,这就是所谓的维度引用和度量,维度引用这个很好理解对吧?说白了就是维度表示的就是那个师表当中的维度外键嘛,对吧?这个好理解,关键是这个度量,咱们怎么理解,这个度量怎么理解,其实很简单,大家想想,所谓的度量就是什么呢?就是用来量化这个业务过程的一个字段,或者是多个字段啊,什么叫用来量化它呢?那你想一想,你要想量化一个东西,你得用什么去量化呀,得用数字去量化对不对?那比如说举一个例子,那在这儿呢,我们上面这张实时表,它对应的业务过程是什么?是下单,对吧?没问题吧?OK,那问一下大家,你说我如何对一个订单进行量化呢?我什么字段可以对订单进行量化呢?对不对,怎样能够去评价某一个订单的价值的高或者是低,对吧?那我用什么去量化它比较合适,我用订单金额呀,对不对?OK,我订单金额越大,说明我这个订单的。
03:40
价值是不是越高对不对,我订单金额越小,那我这个订单的价值是不是越低啊,对吧?也就是说我可以用订单金额去量化,那咱们这个订单的一个价值,诶是这样的,那当然了,除了订单金额,我能不能用其他的这个,呃,比如说这个呃数字类型的值去量化它呢,其实也可以,那我还可以用什么呢?就就比如说我购买的商品的件数,就是下下单商品件数,这个是不是也能用来量化一个诶订单呀,对吧?那也就是说一个业务过程,那它的度量实际上不可能就是不一定是只有一个对吧,我可以有一个,我也可以有多个,诶这是大家需要去注意的,OK,那这就是咱们这个所谓的量度量这个概念啊,然后后边呢,其实是有要求的,你看他怎么说的,他说这个度量呢,通常是什么?是可累加的数字类型字段,首先数字类型这一点大家现在应该是能理解了,对吧,我要想量化它,我是不是就得用数字去量化对吧?这个好理解,关键是这个可累加,咱们怎么理解什么叫可。
04:41
格蕾家呀。什么可累加?哎,所谓的可累加就是说我把这个数字类型的字段呀,我给它累加起来,它是有意义的,这就叫可累加啊,这个怎么去理解啊,来给大家举一个具体例子,我们就还以谁为例呢?咱们就还以这个订单或者叫下单这个业务过程为例,大家想大家想一想啊,就是我一个下单记录当中,我的数字类型的值,我可能会有什么,我是不是可能会有下单的金额,会有下单的商品的件数啊对吧?这是不是都是数字类型的值对吧?那其实这里边还有一个数字类型的值,我们管它叫什么?叫做商品的单价对吧?你下的订单当中那个订单信息里边是不是应该有一个字段叫做商品的单价呀,对吧?那问一下大家,这个是不是一个数字类型的值呢?它显然是对吧,但是你想一想,如果你把所有的这个订单记录当中的,哎,这个商品的单价,你给它累加起来,你说这个有没有意义。
05:36
一个订所有订单对不对?你把每个订单里边的商品单价累加起来,这个有意义吗?这个显然是没有意义的,对吧?诶你比如说它不像我们后边那个订单金额和那个商品的件数,对吧?你把订单金额全加一起,你得到的就是啥呢?是不是一个订单总额呀,对吧?OK,你把所有件数加一起,你得的是一个呃下单的总件数对吧?那玩意儿,你把这个单价加一起,这叫啥呀?什么都不叫对吧?诶那它累加起来就是没有意义的,所以这种情况下呢,那我们后边提到的订单金额和下单的商品件数,那它就是一个度量值,而这个单价它就不能算作一个度量值,诶这是大家需要去注意的一点。好了,各位同学,那这就是咱们这个事实表当中的这个度量的一个概念啊好了,那截止到现在呢,大家应该就知道了,就是我们的事实表当中的主要就包含两部分信息,或者说直白的说就是啥呢?就是包含两两种字段对吧,一种字段我们称之为维度,外界还有一种字段呢,我们称之为度量值,那这一点大家要给他记住,所有的事实表都是具备。
06:37
这样的一个特点的,好了,那这个完成之后,咱们继续往下看,我们再来看一看事实表的一个特点啊,那他怎么说的,他说视实表通常是比较细长的,这个细长咱怎么理解。后边说的很清楚,所谓细长呢,是不是就是列比较少而行比较多呀,对吧,而且后边还说了且行的增速快,诶这句话咱们怎么理解呢?为什么实时表通常是细长的呀?
07:03
大家能不能想明白,自己体会一下啊?为什么实时表往往是细长?首先咱们先说列少,列少这个应该比较直观对吧?因为在实时表当中,我无非就是一些维度的外键,再加几个度量值是不是就完事了对吧?没有过多的信息,所以列不会太多,那关键是行,为什么那么多,而且行的增速还那么快,这是为啥?诶,其实很简单,因为咱们前面提到过事实表它是围绕着什么设计的来着,业务过程设计的对吧?而业务过程对应的是什么来着,咱们往上看,业务过程对应的是,诶咱们上面有来看,对应的是一个一个不可拆分的行为事件,对吧?比如说下单,对的,比如说这个取消订单,那你想一下就是这些业务过程它是不是会经常的发生,对吧?比如说举个例子,下单,那我是不是每天都会有大量这个下单的操作产生啊,对吧?那取消订单我可能每天也会有大量的取消订单的操作产生,那是不是只要有这样的业务过程的操作产生了,那我们就得往与之对应的那个实时表里边插入新的数据啊对吧,没问题吧,那所以说那这张表的这个行是不是会越来越多呀,对吧,诶行的增速快,且行比较多,那就是这个意思,那所以说所有的事时表呢,它的行都是比较多的,事实表其实就是咱们普通意义上的那个大表,大表对吧,咱们在学汉语的时候,应该说什么,大表照大表,大表照小表,对吧,你那个。
08:26
大小其实就是用什么去衡量的呢?是通量就是行衡量的呀,对吧?40表就是咱们所谓的大表,40表往往都是大表,这个一定要理解一下啊好了,那接下来继续往下进行,那特点咱们应该是搞清楚了,那最后我们再来看下一个概念,下一个概念是什么呢?就是事实表的分类,就是事实表呢,它其实是会分类的啊,分为哪几类呢?分为如下三类,分别是什么?所谓的事物时值表,周期快照时值表,还有累积快照时表,可能大家听到这三个概念之后呢,根本就不知道是是啥对吧?啊,然后一会儿呢,我们会逐个的去学习啊,然后咱们现在只需要知道什么就行了呢,就这三种事实表呢,它为什么会存在,为什么会有一个所谓的表分类,哎,我给大家解释一下,那实际上呢,这三种实表主要是用来应对不同的场景的,他们有各自的特点,然后呢,他们是能够解决各自特定的这个问题的啊,是这样的啊,就是不同的问题,我可以使用不同类型的时表去解决,这一点大家要注意啊,然后。
09:26
还有一点需要呃记住的是啥呢?就是在这三种类型的事实表当中,事物事实表它占据了绝对的主要地位,也就是说我们书仓里边实值表会有很多,对吧?但是绝大多数的实时表都是事物实值表,而另外两种类型的实值表呢,可以有也可以没有,对不对?什么情况下才会有呢?就是有它所适用的那个场景的问题,对吧?我们才会有相应的时表,对吧?比如有某一个问题,我就需要用事物周期快照时表去解决,OK,那你就可以去建一个这表,没有类似的问题,那这种表你就可以不见,后边这个表呢,也是同样的道理,也就是说占据绝对主要地位就是事物时表,那所以说我们一会儿学习的时候呢,事物实表大家一定得认真的去学,才行啊,是这样的,那所以这块大家要理解一下啊,好了,那截止到现在呢,我们这个事实表的一个基本概述咱们就讲完了,这在这儿呢,大家可以把这两呃几个知识点给它记住啊,首先实时表它的字段是不是分为两类啊对吧,一类呢是维度外键,一类是度量值对不对,那玩到。
10:26
知识表的特点呢,是不是那种细长的呀,对吧,是咱们所谓的大表啊,然后还有一点是什么?就是识表的分类,它分为这样的三种类型,为什么会有一个分类呢?因为他们是不是需要去解决各自的问题啊,对吧?然后形容事物时,表占据了绝对的主要地位啊,这一点大家要给他记住好了,那时表的概述咱们就说完了,视频我停一下啊。啊好,各位同学,那咱接下来呢,继续往下走,下边我们要学习的是那个表呢,叫做事物型事实表,哎,这是我们第一种类型的时表,OK,那接下来呢,咱们先来看一看,就是这种事实表它有什么样的特点?来那现在我们看一下文档当中的描述,他说事物事实表用来记录各业务过程,对吧?又提到业务过程这个概念了,对吧?那它保存的是什么呢?它保存的是各业务过程的原子操作事件啊,是这样的啊,然后后边呢,还有一个解释说是最细力度的操作事件,哎,这里边提到了一个概念,叫做最细力度,对吧?啊,这个最新力度呢,我们一会儿再考虑,那咱们现在先把前面这段话给它搞清楚就完事了,来把这句话咱们理解一下啊,同时事务时表用来记录各业务过程对不对?业务过程指的什么呢?是一个一个的操作事件对吧?比如说举个例子,我们这儿呢,有下单,有在这个取消订单,有支付,有退单,有退款对吧?OK,那我的事务是。
11:47
表是不是得记录每一个这样的业务过程,对吧?那它与业务过程的对应关系通常是什么样的呢?就是事务时表与业务过程它的对应关系通常是什么样的呢?但是说你说这些业务过程是保存在一张实时表里,还是一个业务过程一张啊,哎,通常就是一对一的吧,对吧,也就是一个业务过程我就会对应一个这种所谓的什么表,哎事物事值表哎,或者叫做事物形事值表也行啊OK啊好,那么照也就是下单我会有一个下单事时表,我支付呢,我会有一个支付事物实时表,那取消订单会有一个取消订单事物实时表,诶是这样的啊好,那每张事实表当中保存的都是什么呢?都是每个业务过程的原子的操作时间,什么叫做原子的操作时间。
12:32
比如说举个例子,那我们以下单为例,那你想一想,你说下单的这个事物师表当中,它保存的应当是什么?是不是应该是一次一次的下单操作记录啊,对吧?是原子的一个最最小的一个操作事件,对吧?OK,是一次下单操作啊,完了一次下单操作,那如果我现在呢,这个实时表是一个诶支付实时表,那你想一想我这张时表当中每行数据我存的应该是什么信息啊,是不应该是啥呀?是一次一次的支付记录啊,对吧?OK,那比如说我是加购时表呢,那么是不是应该是一次一次的加购操作,对吧?那这就是我们事物时表所保存的信息,然后后边呢,我们继续往下看,后边呢,又解释了一句啊,说及最细力度的操作事件,这个所谓的最细力度,哎,指的是什么意思呢?哎,这里边有个概念说力度对吧,这可能是大家不太熟悉的概念,但是这个概念我们必须得熟才行啊,因为以后咱们在呃,做后边的内容的时候,或者以后大家工作之后,这个力度可能经常会被提到。
13:32
啊,是这样的,所以咱们现在必须得把力度这个概念搞清楚,那什么叫做力度呢?来,我们一起来看一眼下边的这个描述啊,他说了力度指的是事实表当中一行数据所表达的业务细节程度,那是这样的啊,它指的其实这个也不特指事实表啊,就是我所有的表当中都可以使用力度这个概念啊,也就是力度呢,市值表当中的一行数据所表达的业务细程度,你可以看到力度是跟谁密切相关的呢?是跟行密切相关的,这1.1定要注意,那咱们这个怎么去理解它呢?什么叫做一行数据所表达的业务细节程度呢?在这儿我给大家举一个具体的例子,诶,我们昨天再去回顾采集项目的时候,对吧?我们去熟悉业务系统的业务表的时候,我们是不是提到了两张表啊,对吧?一张表我们称之为什么older info对吧?还有一张表呢,我们称之为older detail对吧?那之前我们是不是去熟悉这两张表的表结构的时候,我们是不是已经明确了?
14:32
他们的行还有列所表达的含义呢,对吧?在older info里边每行所表达的是什么来着,是一个是一个什么是,是一个订单,对吧?OK啊,那order detail每行数据指的是什么来着?是一个订单里边的一个商品项,对不对?OK,好,那这时候我问一下大家,你说他们俩力度谁粗谁细呢?谁的力度粗,谁的力度细?那显然是older in fo对吧?它这一行的细节程度要比什么样,要比older detail这张表里的一行的细节程度要怎么样呢?要粗一点,对不对?是不是欧detail贴药这一行更加细节呀,对吧?那这个呢,是不是更加稍微都粗一点对吧?啊,为啥?因为我订单明细我是不是精确到了你这个订单当中的一个商品了呀,对吧?是这样的,那所以说这时候我们就可以用力度这个概念去形容这两张表每行所表达的含义,咱们怎么说呢?我们就说older in fo,它的力度是要比older detail这两边的力度要粗的,哎,或者它的力度呢,要比它大啊,是这样的啊,也就是力度呢,你可以用粗细去描述,你也可以用大和小去描述,哎,这一点大家搞也得搞清楚,那这就是咱们所谓的力度的这个概念,哎,这一点要搞清楚啊,然后之后呢,那咱们的所有的事物时表当中,我一定要保存哪种类型的这个操作事件呢?最细力度的操作时间,这1.1定要搞清楚好了,那既然我们提到了older detail和older。
15:58
那大家想一想,你说对于下单这个业务过程,将来咱们是不是得有一个下单的授师表啊,对吧?那我问下大家,你说将来咱们构建出来的这个下单授师表,它的力度应该跟谁保持一致,是跟older info一致,还是跟older detail一致,是不是应该跟older detail一致啊,对吧?因为older detail它是不是那个最细力度啊,对吧?诶,它是精确到商品的,诶OK,这是大家需要去特别注意的一点,好了,那截止到现在呢,我们就已经知道了,这个事物实表大致它保存的是什么内容啊,总结一下啊,首先事物事物时表呢,它会对应什么呀?是不是会对应一个业务过程啊对吧?一个业务过程我就对应一张这种所谓的事务时表,那事务时表当中呢,就保存了这个业务过程当中的最细力度的操作时间,哎是这样的,这是大家去哎需要先大概了解的,然后我们接下来继续往下进行,咱们来思考思考啊,就是说为什么这种事物实时表当中一定要保存这个所谓的最细力度的操作事件。
16:58
为什么呀,对吧,为什么事物师表里他要求我们保存这个最细力度的操作时间,哎,其实说实话,下边这段话呢,就已经给出了答案了,那我们现在把这段话一起读一下,然后大家看看能不能看懂啊,来一起读一下,他说事物型事实表可以用于分析与各业务过程相关的各项统计指标,然后由于其保存了最细力度的记录,对吧?那他就可以提供最大限度的灵活性,以支持无法预期的各种细节层次的统计需求。那实际上这句话是关键,大家自己把这句话体会一下,你看看能不能想明白,就是为什么事物实指表一定要保存最细力度的这个操作记录呢?你看这个能不能想明白。
17:47
嗯,能能体会出来吗。能听得出来吗?不说话是能还是不能,呵呵了,是吧?OK啊,那我想给大家解释一下啊,实际上这句话你好好想想,我觉得应该是能想明白的啊,那在这儿呢,我们先不去讲这个事实表了,那在这儿举一个生活当的例子,方便大家理解啊呃,大家都知道,就是我们美国公司里边呢,咱们应该都都会有这个财务部门,对吧?那财务部门呢,咱们的这个同事,他的一个主要的工作就是干啥呢?是不是得去记账啊,对吧?OK,那记账的时候他得把什么都记下来,正常情况下,正常情况下他需要把我们这一天当中的每一笔支出和每一笔收入是不是都得记录下来才可以啊,对吧?这是不是就是咱们常说的这种所谓的流水账啊,对吧?有进有出,每一笔支出,每一笔收入都得记录下来才行,OK,好,那你有没有想过,他为什么一定要把每一笔支出和收入都记录下来呢?
18:44
啊,有没有想过呀,诶其实这个道理很简单,咱们假如说举个例子啊,各位同学,那假如说现在那我有一个就是咱们这个财务的同事,对吧,那他在记账的时候,他偷懒了,他并没有把每一笔支出和收入都给他记录下来,而是做了一个什么呢?他做了一个汇总,他把每一天的总的周的支出给他记录下来了,然后呢,把每一笔每天的这个总的这个支付也给他记录下来了,就只记录了这样的两个数,那中中间的那些明细啊,对吧?诶支出了多少,然后每一笔支出,每一收入这些明细他都没记对不对?OK,那你想一想,那如果这样一来的话,那将来比如说我们老板现在要来查账了,对吧,你说他可能会出什么样的问题啊,比如说老板,我想老板说我想统计一下你今天咱们一共支出了多少啊,OK,那你说他现在记录的这个数据能不能满足这个要求,能的,现在是能的,对吧?OK,好,那老板假如我现在又换了一个需求,我不想看总的支出了,我想求一下咱们今天的什么,比如说最大的一笔支出是多少,或者说。
19:44
我想统计一下,那我今天的什么呀,平均每笔支出是多少?OK,你说这现在他还能算出来吗?他就算不出来了,对吧?OK啊好,那假如说他现在把那些每一笔支出,每一笔收入这些明细操作都记录下来了,你说刚才这两个新的需求能不能做呀,最大的一笔支出是不是看一看哪个最大就完事了对吧?平均的每笔支出是多少,那是不是求个平均值就完事了对吧?那所以这些都是能够算出来了,诶从这儿大家应该就能够体会到一点,也就是说我们记录的这个,诶数据越明细对吧?那我将来是不是能支撑的这个需求就越多,对不对?那我给你记录的这个,诶这个这个这个数据越不明细,越粗糙,那将来我能支持的指标是相对来说要少一些啊,对吧?诶这个大家应该是能够体会得到的,OK,实际上这个记账跟咱们这个事物实时表这是同样的道理,你事务实时表里边我记录了每一笔的这个下单操作记录,而且是最明细的,对吧?那我将来是不是就可以支撑各种各样的这个需求啊,对吧,这一点大家应。
20:44
该是能够想明白的,哎,好了,那这样一来的话呢,那事物时表,那它的意义大家也就都清楚了,也就是事物时表会保存最明细,最细力度的操作事件,用于支撑将来的各种无法预期的细节层次的统计需求,那实上在这儿呢,我可以在形象给大家去说一下这个事儿,那实际上就是将来啊,我们做的这个所谓的各种各样的统计需求,那实际上都是对什么呢?
21:11
你想一想,就是你最终这个统计需求的结果通常都是一个什么样的值啊,你这个统计需求的结果通常都是一个什么样的值,它会是那些明细数据吗?我会把每一笔订单的这个下单金额,呃,放在这儿,肯定不是的,我们这些统计需求将来肯定都是一些什么值,汇总值,或者叫做聚合值,对不对?OK,也就是说我们再去做需求的时候呢,都是对原始数据进行聚合操作,然后呢,得到几个聚合值,那这是我们所有的统计需求它的一个共同特点啊,是这个道理吧,同学们,OK,那你想一想,如果我这个原始数据当中,我保存的是最细力度的那个操作记录,那你想一想,我是不是不管将来我聚合到什么程度,我都是可以满足的呀,对吧?因为咱们各种需求我都是要聚合嘛,对吧,我可能有的聚合程度高一点,有的聚合程度低一点啊,对吧,但是我这儿只要有了最细力度的,不管你聚合到什么程度,我都可以应付,那其实就是这个原理,就是这个原理啊好了,那各位同学那收时表咱基本上就哎这个意义就说完了,呃,那为了。
22:11
那帮呃帮助大家理解呢,我再举一个咱们具体的这个数仓里边的例子啊,比如说举例子,咱们现在举什么例子,就还以下单这个实值表为例,那大家想想,你说下单这个实值表对吧?那我们再去设计它的时候,是不是我们也要去设计一下它的一个力度啊,对吧?那刚才提到了,诶,我们下单这个表的力度应该跟谁保持一致来着,是不是应该跟那个订单明细保持一致啊对吧?好,那假如说我们同学再去设计这张表的时候呢,我们的力度没选对,假如说我选的不是订单明细,我选成older in了。我建的力度是order info这个力度,那你想一想,Order info这个力度当中咱们有那个商品信息吗?没有,对吧?Order info是不是整是针对于整个订单而言的呀,对吧?而我这一个订单里边是不是有多个商品啊,对吧?我这没有办法去保存这个相应的这个商品维度外建,因为你有多个商品嘛,对吧,这个维度外建你没法设计,所以说你要是呃把这个订单的力度设为什么呢?设呃把这个下单时表的力度设成了order ino的力度,OK,那你这张表当中你就没有商品的这个信息,好,没有商品的信息,假如说我现在想统计什么呢?想统计一下各商品的订单总额,那你现在你能算出来吗?你是算不了的,但是假如说我现在呢,把下单时表的力度,我设计为了订单明细的力度,那每一条明细是不是都会关联一个商品啊,对吧?OK,好,那现在我就有商品的信息啊,我这时候再去算,比如说各商品的销售总额,我能不能算出来呢?是不是就可以算了,对吧?诶从这也能看出来,也就是说你的力度选的越细。
23:40
能支持的指标那就越多,对不对啊OK,你只力度选择越粗,那你这个实表将来能支持的指标就越少,哎,是这样的,那所以说这种事物实表要求我们保存最细力度的操作记录,这1.1定要记住啊,行了,那这个完成之后视频我停。
我来说两句