00:00
来大家呃,认真听啊,我们接下来讲下一课时时表叫做订单时表,当然这个订单时表其实对应的应该是older info那张表啊,Order ino啊,那还是老规矩啊,先来明确啊,这张事实表,我们里边的一行数据,它所指代的应该是什么啊?嗯,这个一行数据指的是一个什么呀?这一个订单啊,而不是商品项了啊,这一行数就是一个订单,用户每下一个单,在这张表里边就有一行数据跟他对应。把这个搞清楚,呃,然后下一个呢,就是这张表的字段啊,这表字段。来看表示字段呢,咱们需要把它的这个CTRLC,把它键面语句咱们拿过来啊。来,CTR来,大家一起看一下吧,来。看它的字段,呃,这这里边呢,我们先找这个啊,它那个传统的字段啊,就是唯独外键和度量值啊,维外键对于订单来说呢,我们有user ID啊,还有什么,还有一个province ID,还有一个就是时间,时间其实就是谁呀,是不是还是咱们下边这个DT啊啊下边这DT也就是在这儿呢,我们一共有这样的呃三个,呃,维度外线啊,那完之后呢,我们找度量值啊,度量值呢,其实就是这几个。
01:12
哎,咱们丢了一个啊维度I键是不是还有一个呃,Activity ID啊,活动ID就是他是否参与活动了对吧?啊好,那一共有这样的四个维度I键啊,那接下来我们再看这里边的这个度量值,度量值呢,就是这样的四个金额啊,原价优惠,运费订单,呃,这个最终金额啊,一共有这样的呃,就是四个四个度量值吧啊然后我们看剩下的字段啊。这几个。来咱们从那到这个位置,那这一大堆,这全是啥。全是时间,各种时间对吧,每个时间是不是对应于咱们订单的一个状态啊啊,那这个就是我们这种累积型快照时表呢,它所独有的这种字段就是好几个时间啊,你看咱们上午讲的那个领领券,领券是不是也是有好几个时间呀,Get time有time有time,当然还有一个这过过期时间咱们没有倒过来啊,那个其实也应该倒过来啊好,那接下来咱们相当于这个表的字段呢,就说完了啊行,那这张表,呃,这个大致的结构呢,我们已经给大家介绍完了啊,就是一行数据代表一个订单表当中呢,我们有维度外建,有度量制,还有一大堆的时间啊,这两张表的这个建表语句,呃,完了之后呢,我们接下来就来分析一下啊,就是这张表,那我们应该怎么去维护它?
02:30
啊,怎么去维护它。啊,怎么去维护啊。其实它跟我们上午讲的那个领券是表是不是很像很像啊,对,很像啊,那这个这张表当中的我们的一行数据呢,肯定也不是一次性写完的,因为有可能你这条数据倒过来的时候呢,我是刚下单没有支付啊,就是支付了,但是有可能没有完成,对吧?啊,那所以说你倒过来的时候呢,这条数据肯定不是完整的啊,那你需要什么时候,比如说到了第二天第三天,哎,这个我们这条数据是不是这个订单的,是不是才最终完成了呀,然后呢,你才能拿着这个订单的最新的状态来干什么,来去更新咱们这个之前那条数据。
03:09
啊,是不是也是需要去修改之前的数据啊,啊,这个其实呃,跟上午那张表是一样的一样的道理啊,那所以说又谈到要修改这个数据了,那咱们还有当中修改数据怎么做,是不是就得先把数据查出来,修改之后再放回去啊,咱们只能是这么做对吧?那这个修改的这个单位呢,我们如果不分区就是整张表啊,那分区了就可以以分区为单位进行修改了,对吧?那所以说这张表咱是不是也是必须得分区的呀。也是得分区的啊好,那咱们这点呢,跟那个一个道理,就不再多说了啊,那接下来问一下啊,这张表,那咱们分区的话啊,我们按照什么分区。啊,咱们按啥分区是不是也是一样的,也是按天分区呗,咱们一天一分区,一天一分区对不对,那每天啊,那咱们这个分区当中存储的应该是什么数据呢。
04:01
啊,每天组赁什么数据啊,来,那咱们还是对照着那个school的脚本去看,咱们先看一看每天倒过来的是什么对不对,然后再决定我每个分区里边放什么啊来打开来circle to HS,那我们搜一下这个order info啊or DR info回车啊,这就是咱们这张表,你们看一下啊。那这张表我们导数据的时候呢,咱们写的circle是这样的,咱们其实主要也是只看谁呀,只看这个呃过理条件就行啊,第一个呢是create time等于Dollar do date啊,那第二个条件呢,是op time等于Dollar do date,那中间呢是用or连接的啊,那cur time等于Dollar do date相当于你获取了什么呀?新增的订单是不是,那all time等于Dollar do date,那这相当于获取的是啥呀?是修改的订单。啊,大家还记得这个opera time它的业务逻辑是怎么样的吗?它是怎么变化的呀?这个字段是不是只要这张表当中我们某一个订单的订单状态发生变化,那opera time就会立即变为你那个订单发生。
05:06
变化的这个时间对不对,如果说这个状态变成支付了,那OK,这个时间就变成支付时间,状态变成完成,那这个就是完成时间,是不是这样的呀,对不对,那所以说我们只要找到op time等于咱们do date这一天的,那你就能把这一天的变化数据给找到。诶就是这个道理嘛,所以说实际上那这个同步策略呢,很显然也是新增及变化,新增就是新增的订单,变化呢就是状态发生变化的订单,对吧,这个应该没错啊,啊,那也是我们每天导过来的数据呢,两部分,一部分是新增的订单,一部分是状态发生变化的订单。好,那这个地方呢,是我们的订单实时表欧德啊实时表,那按天分区,每天的分区里咱们放什么数据啊,来分析一下啊,能不能直接把今天倒过来的新增及变化都放到当天的分区里啊?呃,那还是分着来看呗,咱们现在把新增放进来啊,假如说我现在就每天往这里边放新增,那这个变化的数据咱们能不能往里放呢?
06:08
如果每天都是放新增,那前面是不是每个分区里放的也都是新增啊,对不对,那这个变化的数据放在哪呢?哎,你放这儿肯定是不行的,你应该怎么做,跟上午那个表一样,你应该拿着这个放态发生变化的这些订单啊,干什么呀,去修改是不是这个原来的这个订单记录啊,对不对啊,一样的道理啊,一样道理啊,那假如说我之前前两天下了一个单啊,那销量下单呢,只有下单时间和什么这个支付时间,并没有什么完成时间啊,然后呢,到了今天我这个订单完成了,完成之后相当于你的状态变化了,对吧?那所以说这个订单是不是会出现在咱们今天的新增级变化里边啊,OK,我拿着这个新增级变化的这个变化数据呢,去修改原来的那个订单,我把它那个完成时间是不是给他修改一下就行了呀,对不对,那是不是也是一个这样的逻辑。
07:01
事是一样的啊,所以说那咱们最终定下来,我们这张表按天分区,然后呢,每个分区里边存放什么呀,存放当天的订单,也就是你订单是哪一天下的,那我就放到哪一天里边啊,放到哪一天的分区里边啊,是这样的啊,这个大家要记录啊,然后呢,这个呃,每天打过来的变化数据,你要拿着这个变化数据呢,去修改原来的那个订单记录啊,修改其实要修改的话,其实主要修改什么呀,是不是主要修改就是修改那几个时间对吧?啊,主要修改那几个时间以及订单状态嘛。主要就是这个啊,所以说这个思路跟之前的思路是几乎是一样的啊好,那接下来咱们再把这个,呃,具体的这个更新的这个思路咱们再来说一下啊,现在说明说已经定义好它的分区了,那更新具体怎么操作呢?来分析一下啊。首先啊,我们还是先从今天的新增及变化当中啊,先找什么呀,先找什么。
08:00
先找你这个变化的订单,它是哪一天下的吧,对不对,找谁,其实找这个就行,对吧?找到cur time啊,当然了,根据cur time呢,我们就可以找到我要修改的这几条记录它所位于的分区吧,OK,那把这个分区找到,假设这个分区也找到,完了之后呢,把这个分区的数据拿过来放在这儿,那放这之后大家要注意的啊,注意什么事儿,我们还是那个道理,你拿拿的是不是整个的分区,是,其实在整个分区当中,我可能只需要修改某些数据,不是全部都要改,对吧?啊,但是不管你改不改都要拿出来啊,都要拿出来,拿出来之后呢,我放在这儿啊,那也就是说我们接下来要做的事就是修改这里边的一部分数据,那咱们怎么知道啊,我要修改的是哪一部分啊,然后呢,不改的是哪一部分呢?怎么办呀,是不是跟咱们今天的新增级变化做一个对比啊,那所谓做对比呢,就是做一个joinone啊,做一个joinone啊,那join完之后呢,他们这个对应关系就是这样的,有重合的,有各自独有的,那各自。
09:01
有的跟重合的分别是对应什么样的这个数据呢?来分析一下。这部分这相当于什么呀?哎,不变的订单,哎,老订单没有发生变化,那这部分呢,相当于老订单发生变化了,那我需要改的就是这部分,那这部分呢,相当于是来新增啊,那大家都知道这个数据我最终是不是都要给它写回去啊,都要写回去,所以说这呢,我们采用full al啊啊哎,其实就是这样一个道理,那后后后边咱们具体这个S,其实道理也是一样的,应该是什么呀?还是一个逻辑啊,新的有就用新的啊,新的没有,那我就用这个旧的,是不是还是这样一个道理啊啊OK,那当然这个数据我们来自于多个分区,最终放也要放回到多个分区,所以最终还是需要使用动态分区,对吧?哎,就是这样的一个逻辑嘛。啊好,跟上午很像很像啊好,那我把视频录一下。
我来说两句