00:00
那40有什么特点呢,来看。维度表像描述对象,哎,对啊,他是一个男人,是一个女人,是一个18岁的男人,对吧?事实表呢,像行为啊,对,事实表呢,一般我形象称之为叫动作。对吧?哎,上面描述呢,一般是用名词来描述一个呃现象或者一个单词,那么这个四时表呢,是一个动作,比如说四时表中每行数据代表的是一个业务事件。你干了什么事,比如说来到这网站,我下了一次订单,哎,那这就是一个事实,我支付了一次商品,那这就是事实,我对这个商品进行退款了,我对这个商品进行评价了,哎,体会一下,这都是一些动词。是吧,而且这些动词呢,这个事实表示的是业务事件的度量值,这些事实都可以度量呢,什么叫度量?哎,度量值这个概念你们会反复去说啊,叫可以统计的次数、个数、金额、件数哎等等这种可以累加在一起的,比如说个数可不可以累加呀,几个几个对吧?啊,这个订单下单的次数我可以累加在一起,下单的金额我也可以累加在一起,可以累加的这种度量值。
01:16
那么它通常情况下就是是十点。是,那我们来看一下,比如说找一个订单表。看一下我们的订单,订单表在这out份对吧,凹份,那看一下这个订单表当中,它为什么叫一个事实表啊,为什么是事时表呢?那就看这里面有没有能够度量的值,看这叫order状态,这个final,呃,Final total amount,也就说总最终总共的金额是不是总金额呀?哎,总金额,那总金额是不是就属于度量值当中的一种啊。我而且我是不是可以累加呀,啊可以累加,比如说总共所有用户花了多少钱,我是不是可以把它累加在一起。
02:04
啊,可以累加在一起的,这是可以的啊,有这种度量值,而且这个订单总的这个订单每一行代表一次订单,一次加单,那么累加在一起是不是就是总的这个今天下了多少次单呢?也是订单的次数也是可以的。订单的金额可以的,那有这种度量值,它就是对应的实时秒,那再来再找一个。我们再找一个payment的in方对吧,支付表,那支付表里面有一个支付信息,偷偷on支付信息,那你那个能够支付对吧,这一订单啊多少钱,比如说这一订单一万二千多,那其实我总共。这些所有的订单加一起支付了多少钱呢?可以累加。同时这个支付次数,你想想这个能不能统计它的支付次数。你有20行,那我就支付了20次,有30行,我支付30次。
03:01
这就是他对应的示数,那反过来这是事实表,那你要这么比的话,你再调过来,你看一下这个用户表,那你看用户表里面它有没有能够累加的值。有吗?对吧,次数个数件数金额啊,你找一圈发现好像都没有。对吧,包括这个最终这个次数,比如说多少行啊,多少用户。啊,这只能算出多少用户,但是呢,这个相应的什么次数啊,个数,件数,金额这些都不行啊,都没有,所以说呢,它就是一个描述信息,哎,正常的一个描述,这叫它叫维度表,那下面这个呢,是一个业务名词,一个动作,通常呢是呃可以累加的度量值,那它叫实时表。那给大家描述一个场景啊,描述一个场景说2020年5月21号,这个宋宋老师对吧?啊宋老师啊,是一个曾经的男神,这个三秒选手对吧?啊在京东啊,这个花了这个250块钱买了一瓶,还有人参丸啊,有说买好有人参丸的啊也有人说呢,他买了一个女朋友啊这都有哈啊都有。
04:05
总之呢,是这么一件事,在一个京东网站上买了一个东西,不管是海有人来还是女朋友吧。那这里面谁是40表,谁是维度表呢?来区分一下看啊,这里面什么时间。维度表对吧,然后谁数据用户啊,哎,送送老师,然后买了什么,这是在京东啊,在京东,京东其实还有还应该有个电商,有个商家啊,这的商家得有啊商家啊,然后花了250块钱,250块钱是不是就可以累加它相当于是订单详情当中的一种啊哎,一个一个度量值二百五块钱,然后买了一瓶,那可以买两瓶也可以累加,对吧?哎,那这个瓶它就是对应的实时表。理解一下,那像这个海狗人参丸它属于谁呀?它属于商品,哎,它是商品的的描述。啊,这句话你要理解开来的话,那这个事实表和纬度表就好理解了啊,你说什么时间谁啊,然后在哪,这都是地点名词嘛,啊地点名词啊,然后干了什么事,干了什么事,那这个250块钱对吧?啊花了250块钱,那这个呢,就是四十两,然后买了一瓶,那这个度可度量的值,那这都是40表啊,然后人参丸三品。
05:25
充分体会一下,行,这是事实表的一个定义啊,就是事实表当中必须要有度量值。每一个四值表的行为呢,包括具有可加性的数值的度量值,这个很重要啊,一定是可以累加的这个四值表,那你像商品表就没法理下,你说你商品表不是商表,商品表或者用户表,你怎么累加,尤其这个用户表。你跟谁在家呢,你说你这个用户的这个,呃,生日。没法来加对吧,你说你的生日加上他的生日,张三的和李四的加在一起没什么意义,还有这个等级,你说张三的等级和李四的等级加在一起也没有意义,邮箱加在一起没有意义,电话号码加在一起也没有意义,姓名加在一起没有意义,密码没有意义,昵称没有意义,登录姓名也没有意义。
06:15
就是你每一个值你加在一起都没有什么含义,没有用处,但是你看那个订单的。订单的总金额,我把这前三前五单,比如说来一个套盆对吧?啊,这个销售订单前五的一个订单,我给累加在一起金额那是有意义的,对吧?啊,最多前五个花了多少钱嘛,啊,这是有意义的啊,包括这个支付金额也是啊,支付金额我把这个支付总金额前十的啊,累加在一起进行一个统计,这是没有任何问题的。啊,所以说要存在这种度量值啊,那我们往下看。具有可加性的数值型的度量值,250块钱是商品的描述啊,商品描述放在商品维度表里面感觉可以啊,对啊,那个二百五块钱放在商品表里面是可以的啊,但是那个动作啊,花那个动作相当于是下单啊,下单的一个动作,那里面是一个试时表啊,这要注意一下,包括这一瓶,其实这个名瓶呢,也是这个维度表相关的信息,但是我们更能体现就是说他花了这件,出了这件事儿,对吧?啊就是这件事儿啊,这个呢是一个啊,说的没毛病啊呃,然后呢,与这个维度表相关联的外界一般情况下呢,在这个40表周围啊,都是围绕的是一些维度表什么意思。
07:32
就是刚才我们说这个这是下单嘛,对吧,购买一个东西其实是一个下单啊,准确来说是一个下单,那这个下单这张表里面看一下啊,我们来看一下下单表,这还是out in out in for里面,你看我这里面是否存储了用户信息。没有,我只放了一个优质ID啊,那我要想取这个用户相关信息,我是不是直接从这通过这个ID去关联啊。相当于在我这个下单这个表周围关联着用户表。
08:03
用户通过外界ID就连上了,我想取这个UID,信息就能取过来,我想取时间信息,我直接关联过来,哎,我想取地区信息直接关联过来,就是这里面存储了大量维度表的ID,我想取信息的时候直接可以取这是一个用户ID,你看你看再往后。这你看我想取省份相关信息,这是不是一个省份ID啊,这不也是订单表里面吗?哎,在这个订单表里面,它存储了大量的ID,那给大家看一下这个原来那张图啊,咱们上课讲的这张图,这张图这张图呢,咱们说是一个订单表对吧?哎,订单表我们管它叫事实表,刚才我就讲的时候,我说这叫事实表,它为什么叫事时表呢?你看这里面特点看到了吗?什么什么的ID,什么什么的ID,什么什么ID,然后后面这个呢,是销售金额是不是度量值啊,比如说这个事实表中为事实表啊,通常的特点呢,是包含着大量维度表的ID,然后额外补上对应的度量值。
09:06
这是它的一大特点啊,标准的事值表是这样,当然也有一些公式的,这个事值表它不是这么特别标准啊,不是特别标准什么含义呢?比如说其中某一个维度直接在这里面全放进了,比如说没有通过这个外界的方式连接在一起,然后这里面存在着维度,也存在的ID,也存在着度量值啊,这种情况也有,你也不能把它排除在外啊,这要知道一下啊,能理解吧,就是说不是那么特别标准啊,最标准的情况下呢,就是存储的所有维度的外键ID,然后加上图量值。这是实时表,那这种表我相信大家能够区分出来了吧,咱再往下走啊。这是事实表,然后维度表,好,呃,通常呢,具有两个和两个以上的外键。刚才已经显显示了订单表里面其实存储了大量的外界ID,那你要是有两个以上,就相当于有两个维度呗,啊,至少有两个维度啊,外键之间呢,呃,与维度之间啊,实实现这种多余个关系啊,这个呢倒可以啊,可有可无,你说前面这个首先要存在着度量值,再有呢,是与维度表之间存在着大量的外界。
10:14
啊,这个呢是比较直接的。那如果搞不清楚,就看这张图是最清楚的啊,这样的除了外键之外就是度量值,这就是视表的特点,当然有个别不规范的情况下,这里面存在一些维度表,比如说你看我们这个。我们这里面正常应该存在着省份ID对吧,哎,省份ID,然后还存储着一个用户ID吧呢。啊,这是金额度量值啊,这个final total want是度量值啊,还有这个用户ID在这呢啊用户ID这没毛病,但是你看这里面还存在啥了,这是不是地址啊,还有这个订单描述吧,啊订单描述还有什么这个trade的什么包底啊,一些信息描述,理论上来说这些信息是不应该存在的。
11:00
他应该把它放在这个维度相关的信息里面去。他没放没放的话,你说它就不是这个事值表了吗?嗯,只是说不是那么特别规范啊,因为它这里面存在着大量的对吧?嗯,这个外界ID还存在着可以度量的值。那它就是一个四时表,它表示的一个动作,OK,那再回来,嗯,往下走,那40表的一个特点是什么,40的特征呢,是数据量非常大。为什么说数据量大呀,这个订单你可以无限的增加呀,你只要下单,那他就会增加一条,你下一次单增加一条,下一次单增加一条。那你像用户呢,用户你是注册,那注册的用户呢,是一般是有上限的,比如13亿就到头了,那订单这个几乎没上限,每天都源源不断的这个订单啊在产生。这要知道一下啊,相对来说啊,这只是一个相对特征啊,在现实上是世界当中,这个事实表的数据呢,相对来说比较大,然后内容呢相对比较窄,列数比较少,为什么列数比较少啊,因为四词表呢特点呢是存在的大量维度表的ID啊,它存储的都是ID集中化的信息,然后有个别的度量值,所以说它这个列呢,会比这个维度呢要少一些。
12:18
然后呢,经常发生变化,每天会增加很多数据,就典型的就订单吗?因为订单里面存储这个存储的订单的状态,看这个状态。这呢order order this订单的状态,订单状态呢,有这个已下单啊,然后已未支付,然后下单之后已支付,还有呢,这个发货啊,发货完成这几个状态。对吧,那这个数据呢,是经常性发生变化啊,你只要完成了一个动作,那就变化一个状态。而且这个订单呢,是每天大量的产生,一个电商,如果订单没有的话,那不就黄了吗?所以说这里面就是经常发生变化,每天会增加很多数据。
13:03
热视四时表的一个特点,OK,那基本的对这个四时表和维度表有一定的这个区分了啊,其实最好分的就是上来先看这里面有没有大量的ID,有没有对应的这个度量值,如果有的话,基本上就定位为市值表了,如果没有这些,那我们再看是不是维度表,你说是不是大量的描述信息里面很少存在着外键的一些ID很少啊,不能说没有,你像那个三级分类,二级分类,它们之间是有一个ID连接的,对吧?啊,那这种的你不能说只要有ID连接,它就是时表啊,你要看它是不是描述信息,因为它那个ID能不能进行累加啊,这是你要看的啊啊。成,嗯,那下面看一下四时表,四时表呢,其实我们又分了三种四时表。哪三种试资表呢?分别叫事物型四值表,周期型快照试试表,还有累积型快照试表。啊,一看哇,有点晕啊,有点晕,这么多怎么这么多呢?首先看一下什么叫事实表啊,事物型事表以每个事物或事件为单位,例如一个销售记录,一笔支付记录作为事实表里的一行数据,一旦事物为提交事实表中被插入,那数据呢?就不再进行更改,其更改方式只能是生产更新。
14:19
说的不一定能听得懂啊,我一句话把它搞定。什么叫数值表呢?叫数据一旦产生就不会发生变化的数据,就叫市值表。那典型的市值表有谁呢?支付信息表啊,支付市值表,还有一个是订单详情。看啊支付,这是一张支付表。那这张这个这一条信息一旦产生你这一条信息,一旦产生这个订单编号,编号就已经产生了流水号,看支付流水号已经产生了,他就不会在发生变化,你想改这个信息改不了。啊,除非你把它取消了,就这这个就不要了,不要了他也会记住这个单号,说这个单号被取消了,他不会说把这个编号改了一下,就说你这原来是什么,这个最后末尾是五九,我改成个六九,然后继续在这不可能。
15:11
就是这条信息每一个字段产生之后,都不会再对他进行更改。比如说你看支付金额对吧?啊,然后这个支付那个编号,用户ID订单编号,然后这个商品的一个描述。之后支付类型什么时间支付的。产生就不能改,相当于是一种流水性质啊,不能变对吧,那这种特点呢,就叫事物型40量,一旦提交就成功了,就不能再改了,再改的话,再支付就是另一条支付信息了。能理解吧,哎,是它好,那么再往下看,下一个呢,叫周期型快照四时表,什么叫周期型快照时表呢?它呢是不会保留所有数据,只会保留固定时间间隔的一个数据。给大家举个例子啊,举个例子,比如说这个购物车。
16:01
比如说你这里有购物车,大家都这个上这个商京东上买个东西是吧,或者天猫上都一样有这个商品的一个加减。你再减说你我看好这个商品,我就添加个购物车,我看的不好呢,我把它退出去啊,随着这个时间的变化呢,一直是动态的一个更新的,一会儿这购物车里面多了一些商品,一会少了一些商品。但是我们关心这个动态的变化吗?不关心,我们关心什么呢?我们更关心的是每天结束时,这个购物车里面还有多少商品。对吧,我以一天为单位,我不关心你这一天购物车里面发生什么变化,哎,我就关心你这一天对吧,这个是1月1号,这购物车里面还剩多少件商品啊,剩一件还是两件,到1月2号这个凌晨12点还剩多少,1月3号这里面剩多少。是不是一个固定周期,这里面这个这一时刻它还剩多少东西啊。那我想统计这种指标,那怎么统计呢。
17:01
你虽然说你这个在这个期间你发生变化,那没关系啊,没关系,但是在这一时刻你必须是停的停止的,哎,那这种表呢,我们就要把它做成叫周期型快照,40点不保留所有数据,你看你中间这个购物车里数据的变化,这一天变化我不管,我就看你最后一次课。啊,每天的那一时刻它是多少,诶只保留固定时间间隔的数据,比如说每天或者每月的销售额,就是到了这个每天一过这个12点对吧?啊凌晨12点,那这一天我卖了多少东西,至于你中间发生什么变化我不管,包括还有这个每月的销售额,对吧,就是到这个月最后一一天最后一分结束,他的销售额是多少。啊,固定的周期,每月的账号余额。哎,那比如说我想做到每天的一个销售额的一个统计,那我这个快照会做到什么级别呢?哎,那就是每天做一次快照,每天到凌晨12点的时候,诶统计一下当前这一时刻有多少人,对吧?销售额多少,那到了第二天的一个凌晨多少,再来一天凌晨销售多少。
18:08
这不就完了吗?那这就是每天一块照啊,那如果月统计指标呢,那就是我每个月做一次快照,相当于拍一次照,嗯,这刻静止了对吧?嗯,拍到相片上呢,那就停止开始刷好,那再往下呢,叫累积型快照实时表。什么叫累计性快照时表呢?累计快照实时表用于跟踪业务的实时变化,其实呢,呃,翻译过来就是它记录了一个事件从开始到结束各个时间点。的时间给你记录下来。比如说下了一个订单,那你什么时间下的订单,什么时候用户签收了,一签收这事就结束了。那在这个你这个下单和签收中间发生了哪几个重要时间点呢?什么时间打包的,什么时间发货的,有印象吗?这个京东物流上他会给你记录,哎,走到哪一步了啊,到哪一步你可以联系谁啊,或者说这个到哪一个这个网站了啊,还有大概多长时间啊,别着急啊,你等是吧,哎,给你一个流水线。
19:11
那这种表呢,叫累积型快照时表,记录了一个事件从开始到结束。所有的过程的时间点,重要时间点对吧。啊,那这就是试点,那我们稍微总结回顾一下啊,乍一看有点晕,是这个时间比较长,来看一下啊,回顾一下什么叫维度表呢?哎,维度表通常都是一些描述信息,哎,往往是一些名词。不可以累加,这是它的特点,好,那往下看,下面我们来看一下四实表,四实表呢,往往是记录了一个业务过程,这里面呢是有一定的度量值的。啊,图样值,而且它的特点呢,是这样,事实表里的字段的特点是大量的属性ID,比如说维度表的ID,然后呢,下面加上一些度量值,个别不规范的情况下会有一定的维度描述,仅此而已,但是这两样是必须要有的,也就说一个是外界,呃,属性的外界ID,还有一个就是度量值,这两样也有,那它就是事实表,那四时表里面又分这么几种类型。
20:20
第一种叫事物形式表是一旦产生就不会发生变化,因为这个事件一旦产生,这一条就是一条了,我不会再更改这个条,数据里面任何一个字段我不会更改。它的特点,那下面呢,是周期型快照式量,它的特点呢,就是因为这里面这一条信息,它经常性发生变化。经常性发生变化。比如说订单表。就这个订单,订单表里的状态呢,对吧?哎,它会发生什么状态呢?啊,一会儿支付啊,一会未支付,一会已支付那个订单那个状态order它是变化的,那你变化的怎么办。
21:03
对吧,某一个字段发生变化,那它一直在变,那我什么时候合适啊?哎,那我就给它做成快照表。哎,我不管你中间怎么变化,我就到这个凌晨这一时刻,你是一个什么状态,哎,然后在下一个凌晨这一时刻又什么状态,我每天固定给你拍拍一个快照,那你期间发生的一些微小的变化,对我来说没关系,我就看结果,哎,我关注的是最终的一个结果就完了啊好,那再往下走,那下面呢,还有呢,是这个累积型快照40表。他记录的是一个事件从开始到结束的时间,这是下单啊开始对吧,嗯,什么时间下单,什么时间签收的,那还有一种呢,像领用优惠券,优惠券,领用优惠券呢,你什么时候领的,你什么时候用的。对吧,哎,中间这个优惠券发生什么变化都可以给你记录下来,那这都是一个累积型快照,是不是这就完了。
22:00
这是这么多,那这么多的话呢,我们稍微来看几个哈,来看几个,呃,首先第一个叫这个是活动表,为啥要给四实表进行分类呢?因为我们进行维度建模的时候啊,我们说要按照这个40表周围有多级维度啊,那四时表又要把它,那是首先我们要说区分是为什么要区分四时表和维度表。啊,维度表这个应该知道吧,因为四值表周围是多级维度对吧,多级维度是循化模型,一级维度呢,是信息模型尽量性退化,那这个四值表为什么要分呢?四值表,因为我们这里面有的四值表叫一旦产生就不变化,那还记得我们在导入同步策略的时候,是不是有这么几种同步策略?我上面写过啊,同步策略。策略,那同步策略的时候,我们在找数据的时候,有这么几种策略,还记得不啊,上午讲过,有叫全量的,有叫新增,新增和变化,还有特殊的。
23:03
那大家思考一个问题,40表当中有一种叫一旦产生就不发生变化。那你说你倒新增还是导全量呢。因为40表的数据量都比较大,咱们说过40表的量都比较大,那比较大的情况下,这个全量叫导小。那你就只能导这个表是吧?啊,只能导这个,下面就采用这个新增或者新增的变化去导这个表,那采用这个表,那里面什么时候导新增,什么时候导新增的变化呢?有没有思考过。哎,其实呢,我们新增的表呢,往往是事务性师表,体会一下。事物型四表呢,我们是导的新增,因为它一旦产生就不会变化,那你说我今昨天我产生了四条数,呃,这个四条数据。那我到了第二天的时候会发生变化吗?不会是我又产生四条,我导他的新增是不是又过来了,哎,这是第二天的数据,那如果我日后想分析指标的时候,我想查全量数据,怎么查,第一个分区数据拿过来,第二分区数据拿过来是不是就是全量,这是不是就是全量?
24:11
因为这里的数据没有发生变化。那所以说四四物形四值表呢,我后面直接导这个新增就可以解决掉,那问题又来了,那什么时候导这个新增的变化,首先前提还是数据量比较大,因为四四实表的数据量比较大,而且还发生变化。那简单呢,发生变化的话,那我们就是这个订单呢,那订单,那订单的话,比如说第一天我下了四单啊,对吧,下了三单,然后第二天又来了,而且其中这两条,这两条发生了变化,那我问你这是今天新增的,这是昨天这两单状态发生变化,你要不要同步到这里面。如果你不同步到这里面,我日后想全量查询的时候,比如说全面扫描。那你这个是不是这个状态不对呀,没有更新呢?没有及时更新,那怎么能做到及时更新,是不是把这两条表同步过来之后,同时更改对应的状态,把这个状态改掉。
25:12
那我一会儿再扫的时候,把这个扫进去,这是最新的吧,当前最新的,那是不是就能记录整个表里的全部数据了。啊,全部数据了,同学,那你这太麻烦了,我直接把所有表数据都导回来就行了呗,哎,对,那叫全量,我说过全量的话是能解决所有问题,但是呢,带来的问题就是数据量很大,你每天一个全量,那你的持盘空间是扛不住的。不知道这个是否能理解啊,就是说新增新增和变化是处新增呢,是处理数性市表的,新增和变化呢,是处理这个周期型试表,还有这个菱形试表啊,相关的一个处理方式啊,这是这一块。好,接下来呢,我们考察一下大家的眼力,看看哪些表呢是维度表,哪些表是事实表,你像那个订单表啊,订单表,订单表呢,就属于典型的这个叫呃,事实表啊,实表啊,从哪去找呢?你看怎么找。
26:06
用户ID对吧,用户ID还有谁ID啊,我记得有个省份ID。打开。哎,看地区ID对吧?啊,有这种维度表相关的ID,但是你会发现,哎,这里面有一些维度信息啊啊维度信息之前说过,这不是标准的这种,呃,这种这个式值表对吧?啊如果把它替掉之后,呃,封装到一个是呃,我右表里面那是比较正规,但是不要紧呢,有这么两个,然后同时还有谁呀,看这什么优惠金额啊,什么原原价金额,这有相应的金额是不是可以进行累加呀,哎,这就是对应的这个实值表啊那再往下看,看看订单详情,那订单详情是维度表还是表呢?哎,上来往这看找,哎上来就找ID找ID,那这里面就有这个商品对应的ID掉线了是吧。好,那恢复过来之后呢,你看哈,还是啊,看这个表的时候就去上来就找它的ID,有没有什么其他表的ID,然后呢,再找一下有没有对应的度量值,比如说商品的数量对吧?哎,商品的数量,那这时候可以累加呀,还有商品的这个价格对吧,可以累加,OK,那这样下走,哎,像商品表,你看一下商品表,商品表里面呢,你找ID,找到的ID呢,是这个相关的SPID和这个品牌ID,乍一看好像它是不是也是一张市值表呢。
27:25
啊,其实不是啊,其实不是啊,其实呢,这里面呢,你是可以把这个SKU表和这个品牌ID呢,啊,把它汇合到一起啊,形成一张大的维度表,因为这里面没有度量值,你会发现这里面没有度量值。没有可以进行累加的啊东西,比如说你累加一个商品,累加商品啥呀,对吧?啊,这个不好累加啊,没法去累加,所以说你看到了对应那个ID,它也不是一张市值表啊,仍然是描述这个商品相关信息的,就商品的名称,商品的描述,商品的重量啊这几个去判断啊,行,那后续呢,这里面这些其他这些表啊,我就不带大家一一去看了啊。
我来说两句