00:00
下来我们来看一下是加构四时表,加构试表呢,这里面我们叫什么?周期型快照四时表,跟我们之前这几张表,前面这些叫事物型快照时表,略微有些区别,稍微回顾一下事物型事实表的特点是一旦产生就不变化。一旦产生就不变了,那我在导数据的时候导的是增量。对吧,因为它历史的数据是不会发生变化的,所以说我只要导增量的话,日后你想查哪一天就查哪一天,这就是把他们所有分区都合在一起,就是一个全量。是这样的过程,这是事物型式值表特点,那下面呢,说的是一个周期型试值表,那周期型视值表呢,是周期性的,对数据呢进行一个操作。啊,这里面我们的周期呢,是按每日每日一快照,你在企业开发的时候,或者面试官总还说啊,你们什么时候做一次快照啊。啊,这句话那说的就是这种周期型快照是表每日一快照,那每日一快照它针对的什么呢?比如说这个加入购车,购物车这里面它是有数量变化的。
01:10
你看啊,这个是我是下面这个是一个购物车的表。购物车的表,其中有一个呢,是购物车商品的数量。那这个商品的数量你体验一下,你去京东去买东西,那这个数量有时候诶今天我想着啊,买买一个得了啊买一台这买买一盒买一盒还有人参丸对吧。到了这个今天发现昨天晚上这个用的比较多是吧?啊吃的比较多,那这个不够用了,那我就再加几盒,那这个购物车里面呢,我就又加了几盒啊,然后合适的时间呢,我把它一下单。不就完了吗?啊,所以说这个数量呢,是动态的变化了。那动态的变化的,如果说历史数据是动态的变化的,那如果你还导增量的话,比如说原来这一天里面是一一个,到了第二天这里面是两个。
02:01
那你导增量,那我问你到时候用谁的,那你前面这一条数据,你说前一天这个数据就没有意义。对吧,我关心的是当前这个购物车里面有多少个。我不关心你昨天这个购物车里有多少个啊。我往关心的是当前这一。那既然这里的数据是发生变化的,那你肯定不能按照这个,呃事实表,就事物性事实表的特点。那你就要导新政的变化,但导新政变化呢,处理处理起来还还是比较麻烦一些。那这块怎么办呢?哎,导增量不合适,那我就直接导全量,导全量,因为我们关心的也是当前这一天,目前截止到这个这一时刻。这个所有人的购物车里面的商品。我肯定关心的是现在这一时刻他的购物车的状态,我可不关心你以前怎么怎么样,对吧?啊,以前对我来说统计一些指标其实没有什么太大的意义。
03:00
啊,没有什么太大意义哈,所以说这种表呢,就是每天做一次快照,就每天导入一次嘛,但是导入的是全量的导入,所有数据全进来。哎,就当前这一时刻,你是什么001购物车啊,002购物车啊,一直到什么100号购物车,当前这里面有多少就是多少,我不管你前一天你这里面是多少个,跟我没关系。好,这是全量,区别于事物是,呃,事物型时表,每天导入增量,因为它这个事时表呢,事物性视表呢,它是因为历史数据不变化,那我可以用历史数据,那现在呢,我是发生变化,那我就不能用了。哎,那周期型快照式表的列式。什么列式呢,它有啥问题啊,存储的数据量会比较大,每日全量嘛,那数据量那肯定大呀,啊相对来说会大一些。嗯,但是呢,你有相应的解决方案,看周期型快照式表存储的数据呢,比较讲究时效性。啊,非常讲究时效性,时间太久了意义就不大了。
04:00
可以删除以前的数据,比如说加入购物车这个事情就是。我关心的就是当前这一时刻他的状态是什么。今天。购物车里有多少东西?包括下一张表是这个收藏。收藏表也是,我关心的是当前这一天结束之后,他一共收藏了多少多少商品,或者收藏了哪些商品。我不关心你历史收藏。哎,所有的数据全部都是当前这个状态,换一句话说哈,呃,像我这个像加入购物车啊,包括收藏这样去做,如果你有条件的话,前面这些。性市表,你也可以每天导全量啊。你体验一下,每天我可以导全量的没问题,比如说3月10号的数据,3月11号的数据,3月11号的时候就可以把3月10号和3月11号的数据通通往这里覆盖。那你会发现这里面有两天的数据,数据量大了,那第三天的时候把这前三天的数据再再一个覆盖吗。只不过数据量会越来越大。但是呢,不能说它不能用。
05:01
啊,而且一般型中小型公司,他们不喜欢处理这种复杂的业务逻辑,怎么办?所有表管你什么表呢?全部是全量,全部全量,一定解决所有问题。只要是量话,你能决所有问,不需要那个其他的啊,增量种导量解决这些问题,导量问题就是存储数据量过大。滚雪球一样。啊,所以说你要是从这个书上优化角度来说呢,我们要适当的降低存储数据。据那里就生了这个每一除,比如除的数据,数据。哎,我只保留最近这七天内他收藏的情况,他加入购物车的情况,那就够了。啊,那就够了哈,所以说时效性呢,是比较强的这种里面好,那既然理解了这个概念之后呢,往下看啊往下看那仍然是加入购物车这个事实里面,我们关心哪些维度呢。
06:08
什么时间?哪一个用户把哪一个商品加入到这个购物车里面。哎,关心的是这个,那好吧,那你看一下我们创建的这个加入购物车这张表,这张表是可以改变的啊,大家一定要有这种思想,就说这个DWD层这张表呢,它是可以高于这个ods。啊,Ods对应的这表里的一个字段,我可以增加的,那增加的前提就是这里面的字段尽量都是键加上。度量值外键加度量值就可以,那来看哪一个用哪一个用户,这个用户放了哪一个商品。这个商品什么时间放的?哎,下段时间。
07:00
也就说那这样呢,就覆盖了所有的这个我们想关心的维度,想关心的维度,嗯,那还有我们关心的度量值,有没有看一下我们关心的度量值,度量值呢,是加入购物车的数量。加入购物车的数量。嗯,放入购物车时的价格。价格没有,其实这个加入购物车时的这个金额啊,这个是加入购物车时这个商品的金额,那这也有对吧?啊,加入价格和数量,你说度量值我们也有了,对应的外键也有了。那下面把这张表还是老套路,老套路呢,老套路是往这一放,放完之后呢,你去ODI层去找这个car的音符。去ods层找cut in。Ods car info购物车。
08:01
哎,购物车这啊16,那把这个购物车这张表拿过来。拿回来之后往这一放。好往这一放呢,还是啊,先去查一个一个去查,没问题,没问题都能够提供提供。好A,发现完美啊,所有的字段呢,都能够提供,那甚至简单了,咔,一复制,往这目标表上啊一放,然后原始数据过来往这一放,中间字段替换。对吧,哎,这都是成型的套路,我希望大家呢,以后写代码的时候就是按照这种套路啊来啊,所以说他不会出错。加入到购物车这。拿过来。好,往这一补,往这一补,正常情况下我就就结束了,同学这个还没理解呢,说这个发现你这个跟之前的增量导入没区别呀。
09:10
我不知道大家有没有反过来这个劲儿哈,就说你看那个上面那个评价式的表,你也是直接咔一查询,然后往里面一灌,那我这个加入购物车也是一查询往里面一灌。那区别在哪呢?那你为什么这个叫事物型试试表啊,这个下面这个叫周期型快照试试表呢。他好像没没感觉是吧,哎,区别在哪,你还记得不?前面这些表的导入的时候都是按照什么导的。它导入的时候是导的增量。那我加入购物车和收藏这张表导的是什么呢?导的是全量。那回忆一下,看一下第二文档,第二文档。第二个文档里的时候,我写导入脚本,或者这个同步的时候。看一下这个同步策略里面,同步策略里面之前我说过啊,我说的是加入购物车和收藏表,它比较特殊,后续呢,我们要对它进行一个特殊处理。
10:11
记得吧,它特殊处理的话,那我们导的是它的全量。那像我们之前用的那些什么退单表,支付流水表,订单详情表、评论表。他到什么?倒的是增量啊。他导的是增量,那我处理的是一个分区内部的一个数据,那我现在这倒过来呢,是全量的一个数据,每天的一个全量啊,就像这个建峰说的啊,是分区的一个概念。对吧,那我这里面其实不分区啊,就是全量直接一个覆盖。啊,这是分是分区啊分,但是分区里存的数据是所有天的数据啊,这句话会准确一点啊,那我们来画一个图哈。画个图像,我们这个加入购物车里面的数据。加入购车。加入购物车这里面也是每天创建一个分区表,每天一个分区表啊。
11:11
有点,哎呀。行,这里面是每天一个分区,比如说这个呢,分区呢,是3月10号的数据。对吧,3月10号数据没问题,那到了这个加入过这天呢,这里面存储的就是3月10号和3月11日,每天一全量啊,每天我会把历史的数据加在这里面,那我再来一个分区。再来分区,那这里面存储的就是3月10号,三月。11,三月12。
12:05
对吧,每天我都是把历史的数据过来,然后覆盖到里面去,这是正常一个分区,但是呢,要是其他表,你像我刚才讲的那个评论表。评论对吧,评论表的特点呢,它是四五形式表,它的特点呢是这样,你这里面存的是3月10号数据,那第二天再来。那我这里面就是三月11啊,三月11你再来一个分区。那我就三月12。看看它这里面的区别啊,看一看这里面区别啊,也就说你虽然说这个架构表它也是每天一分区,但是这里面存的是把所有的全量数据,那你这个评论表呢,因为它是一个增量历史数据不会发生变化,那它的全量是是这个把所有的分区都加在一起,就是它的全量。啊,那这个架构购物车呢,只是最后一天是一个全量,那你会发现这里面会有大量的冗余数据。
13:05
对吧,就有于数据嘛,就浪费磁盘空间,但是之前我说了,那你可以什么呢?可以保留最近一周的,保留最近一周的数据,之前的数据,你可以把它慢慢的删掉,替换成这样啊,就也还好啊,也还好啊,那这块呢,是它们两个之间的一个区别哈,一个区别,那你说现在呢,我查询的过滤的这个数据,比如说你看我现在这个市里面。我虽然说这个DT过滤的是3月10号的数据,但是3月10号。嗯,我我要是过了3月12号会好一点啊,比如说过滤3月12号的数据,那这里面它其实既包含了3月10号,三月11也包含3月10号。是全量数据,那你像这里面呢,这里面比如说我要写个过滤三月12,那他只拿的是三月12的数据,前面的数据他并没有拿到。哎,通过这个物理条件,你能发现是不太一样的哈,不太一样的,那这个呢,我们就来把这个实现一下哈。
14:00
这块听懂了吗?嗯,这块我得问一下,呃,刚才这个呃,快照周期型快照试试表和事物型试试表这个区别能分析清楚吗?清楚同学帮我扣个一。啊。这样的好处啊,因为加入购物车它是变量,它是变量,你导这个新增的话,它实现不了你这这里面的功能啊。嗯。行,那OK了哈,嗯,那刚才有同学说这个这样的好处是什么?好处的话,你所有数据如果都导全量的话,那我直接从这个分区里面去查,那肯定会方便一些,但是呢,它有坏处,坏处就是存储空间增大了。另一方面呢,你这里面是因为加入购物车,它不能倒新增啊,他没办法去导新增。为什么不能往新增,因为比如说你3月10号的数据。啊,这里面3月10号数据它是有可能变化的,它是变化了,那变化的话,如果你也倒新增的话,那你这个3月10号过来的数据。
15:06
啊,就3月10号你就不你就不管它了,对吧,你没法管它了,因为它是变化的,你导新章,你这里面导的是三月11,那如果3月10号变化了,你怎么去查它呀,你查这个变化数据啊。没法查,而且你还得覆盖吧,你还往里覆盖,嗯,它这个不一样,那我这是全量,我直接都倒过来啊,然后呢,增量这块呢,是因为我这里面它不会变化,它会变化吗?评论完之后就结束了。啊,就结束了啊,行,那我们继续往下走啊,往下走把这个代码要实现了。下周。好,那下面呢,下里面去插入数据啊。Over啊,购物车好。
16:21
OK,那这里面插入完之后呢,我们可以查一下。From哪张表呢?这里面插那就插吧。OK,那这个就结束了哈。
我来说两句