00:00
呃,好了,各位同学,那咱现在呢,就来把呃这个支付成功这张实时表的数据装载,再给他做一下首日装载跟美日装载,那咱现在呢,还是先从首日开始,那首日呢,我们还是以6月14号的数据为例去写啊好,那现在咱们就来看一看这个我们应当怎么去做,呃,首日大家都知道,我们实际上呢,处理的就是业务系统当中那些历史的操作记录,对吧?那所以在这儿呢,我们需要先拿到诶历史上的所有的支付成功的操作记录,那当然这边我们要的是什么力度,是明细力度,对吧?那咱们大致的思路应当是怎么样呢?先从payment的iner这张表当中找到历史的支付成功的订单ID,然后再用它去关联是不是订单明细,进而拿到支付成功的订单明细啊,对吧,是这样的一个逻辑啊,好,那现在咱们就把这个逻辑给它实现一下,先看payment info这张表,那首先我们应该是找到这张表啊,我们来一个select,然后呢,From o o DS,对吧?呃,找到那个payment info INC。
01:01
呃,完了之后我们只需要拿着它的14号这个分区就行了,零六杠诶幺四诶搞定啊,这个相对来说是比较简单的啊,那之后呢,我们呃需要记住那这个INC首日是不是有那种不什么start和complete的那个那个数据啊,对吧,那种的我们不能要,所以说这个过滤不能忘,直接来一个boot,然后杠inert OK,那这个咱们就搞定了,行,那它完成之后呢,我们再继续往下进行,这里边我们需要拿到它的哪些字段呢?呃,或者说我们还需不要再做进一步的过滤呢?先说过滤吧,先把过滤写来,要不要过滤得过滤对不对,我们只要什么样的来着,就是那种支付成功的这个,呃,这个订单对不对,支付成功的,那支付成功的怎么去看出来呢?是不是看后边的那个payment status就行了,对吧,只要他最终状态是1602,那就表明这条记录就是一个历史上的支付成功的操作记录,对吧?那所以在这儿呢,我们应当再加一个we过理条件应该是呃,按了一下啊,这个别忘了直接来一个按的,按的什么呢?应该是按照。
02:01
应该是那个pay men,对吧?当然它应该是位于哪个字段里边的,位于那个date里边的对吧?Pay men payment的s sta,幺,呃,S,它应该等于是1602这才行啊对吧?好,那完之后呢,我们呃来看一下我们在这需要哪些字段啊,这个字段咱们用谁呀?首先订单ID咱是必须得拿的,这个因为他一会儿说得呃,得用那个订单ID去关联订单明细啊,对吧,所以order ID这个字咱是必须得有的,那别的咱还要不要拿呢?我这来一个date点,哎,User order ID下些ID,那别的咱还用着呢。别的用着呢,别的也得拿吧,比如说举一个例子啊,那咱这里边一会儿是不是需要用到一个支付成功的时间,对不?这个时间咱应该取自于哪。是不是得取自于谁call back time吧,对吧,现在大家能不能体会出来这个call back time,就是咱们那个真正的支付成功的时间,应该能体会出来,对吧?啊,也就是我必须得接收到回调对吧?而且回调信息里边显示是成功,我才能来认为它是支付成功的,所以说在这儿呢,我们应当以回调作为,呃,回作回调时间作为这个支付成功的时间,而不能用create time,这个是不准确的,对吧?那所以在这儿呢,我们为了拿到那个支付成功的时间,所以说copy time,我们也必须得一同给它选出来,来一个data.ca,然后呢,BA,然后下划线t copy time OK,那截止到现在这两个字咱们就都拿到了,那别的还用不用再拿呢?
03:27
也应该还还还有一个个也应该得拿出来啊,是谁呢?就是那个支付的类型吧,对不对,这个是不是相当于是咱这个支付的一个维度啊,对吧?OK,那只有这个表当中有这个支付的类型,别的表没有,所以咱这儿呢,只能从这儿了,所以payment tab咱也得从这儿拿啊来,我们再补上一个字叫做DA,然后呢,Pay men,然后呢,TOK,那这个字段咱也要拿出来,行了,那他们出来之后,其实其他的呃,暂时就不需要了,那当然了,这里边是不有一个UID,理论上我们也可能会用得到,对不对,比如说谁为什么会用到呢?因为我们的订单明细里边是没有UID的,对吧?那所以在这儿咱们能拿,当然我不从那儿拿也行,我从哪去拿呢?我从older ino里边去去拿也行,对吧,那一会咱们要不要跟order ino进行关联的,其实还是得关联的,为啥呢?因为呃,Older ino里边有一个它独有的资料,就是那个pro ID对不对,你要想拿pro ID是必须得跟咱的这个older info进行关联的,对吧?别的表都没有,所以反正也要跟older info进关联,所以说那个U。
04:27
ID你从哪拿都行,从payment那方拿或者从O方拿都可以啊,OK,这个咱们理解一下就行了啊好了,那现在呢,我们就呃先从这张表拿这几个字段得了啊好了,那这个完成之后,咱继续往下进行啊,看一看我们还需要哪些这个自查询,呃,下边我们要的应该是谁呀?应该就是订单明细了吧,我们这是不是已经拿到了支付成功的订单了,相当于诶,然后就可以关联订单明细了,那这个订单明细那咱们就不用再从头写了,我们还是基于前面的稍微调整一下是不是就行,我们随便找一个啊,找一个首日的改一改就可以了,那这就是一个首日的CTRLC,咱拿过来之后呢,我就给它放在这个位置,好,那各位同学我们现在一起来看一下啊,呃,这里边呢,我们需要拿到什么呢?需要拿到呃,咱们ODSODT这张表14号分区的对不对,全部的数据,这是不是相当于拿到了全部的明细啊,对不对,OK,那一会儿是不是这个子查群也得跟这个子查群进行一个关联操作,对不对,那他俩关联的时候,我们应该怎么关联?
05:26
应该。是不是也用inner draw或者是用left draw就行,对不对,这其实跟那个取消的是一个道理嘛,对不对?这里边只有取消的订单,这里边是全部的订单,而我们这儿呢,应该要是不是这个成功的订单啊,对吧?那所以在这儿呢,我们应该以它为准,做一个left go啊,OK,这个理解一下行了,那这个完成之后,我们继续往下走,呃,那下边呢,我们还需要再去关联其他的这个查询啊,比如说这边还得关联谁呢?咱们还得去关联一下older info吧,对吧,因为这里边咱有一些资料是拿不到的,比如说pro ID,还有UID,咱得从O里面去拿,对吧?所以在这呢,我们先给它把这个子查询写上s sed,然后呢,让一下应该是哪张表,应该是ods层的o or,然后DR,然后下游线in for INC对不对,然后在这呢,我们来过滤条件,在这边呢,我们也是先拿到它是不是零六杠幺四这个分区的数据,然后呢,把这个诶是不是给它过滤一下,哎,就完事了,对吧?那接下来我们还要不要再做进一步的过滤呢?各位同学还需不需要再做进一步的过滤?
06:27
需不需要啊,注意啊,咱们目前拿到的,你要是这么去写,你拿到的相当于什么,是历史上是不是所有的订单。没问题吧,OK啊好,那你说我还要不要做进一步的过滤的。需不要过滤,其实这个过滤也行,不过滤也可,对不对,为什么啊,咱们都知道一会儿这个跟这个前两个查询是不是肯定得做一个inner转或left join对吧?他俩转完之后,这个结果就只剩下什么了,就只剩下了支付成功的订单了,对吧?完了之后呢,这儿甭管你这儿是过滤还是不过滤,我一会儿我这儿来一个left照,是不是剩下的也都只有什么呀,支付成功的订单没问题吧,所以在这儿呢,你可以去过滤一下,对吧?你比如说你要过滤的话,你把什么样的过滤出来,只留下那个支付成功的订单是不是就够了,对不对啊,你可以过滤一下,那你不过滤的话呢,那我做完这个John之后,是不是也相当于会把这个数据过滤掉啊,对吧?是这样的,那当然呢,你这个要是在这儿过滤的话呢,能够让这个数据量少一点啊,对吧,你不过滤的就是可能计算量大一点,但是结果其实是一样的,坐在这呢,咱们就不去做这个过滤了啊,因为这个过滤条件写起来是相对来说要麻烦一点,对吧?啊,这个咱们就不再过滤了,OK,那结果不受影响就行,好,那接来咱继续按进行。
07:42
下,比如我们需要从这里边拿什么字段呢?哎,首先一个字段就是它的ID,因为一会得做关联对吧?哎,ID咱们得给他拿出来,拿出来之后呢,我们再继续往下走,那还需要拿什么字段啊,应该是拿一个userd啊,对吧,再拿一个proce processd对不对?把这些字段咱给它拿出来就OK了,行了,那这样一来我们就拿到了这个子查询的所有字段了,那再往下其实就不用再一点点写了啊,剩下的其实就是就剩什么了,剩下的其实就剩下,呃,这个字典编码表啊,还有什么那个活动跟明细的关联表,优惠券跟明细的关联表,是不是就这些东西了,对不对,我们就不再一点点写了啊呃,那现在我们也不去从上面复制了,咱们直接把文档当中的最终的答案咱们给它拿出来看一眼就行了啊来现在呢,我们把这个首入装载的circle语句给它拿出来,诶,其实这是咱们的和呃,这刚才咱们自己写的,这点呢是核心,只要把核心这部分内容写完了,其他的就简单了啊来我就把我刚刚写的给覆盖掉了啊,我直接来1CTRLV覆盖掉,好,那现在我们一起来看一下这个完整的。
08:42
装载语句,好,那咱现在还是从子查询开始看起啊,来,那这个是s select from,这是咱们的第第一个子查询,对吧?来大家观察一下,它的第一个子查询跟刚才咱们所写的可能不太一样啊,咱们第一个用的是谁?是那个payment in for对吧?他这个第一个是谁呀?是older detail对不对?那他第二个是谁呢?他第二个是那个payment的一分,诶那这个谁在前谁在后有区别吗?
09:07
其实没区别,为啥?因为咱这用的是什么,是inner照,Inner照是不是谁在前谁谁在后,无所谓啊,对吧?OK,总之就是前两个子查询,它照完之后返回的就是什么,就已经是支付成功的订单明细了,这个应该是呃,没有疑问的,对吧?OK啊好了,那完成之后我们继续往下走,那下边一子查询跟上边是不是就是都做left draw就行了呀,对吧?这是第三一个order in查询没问题,然后往下走,这个是谁?这个是那个明细和活动的关联表,下面那个呢是明细和诶这个优惠券的关联表,对不对,这个都没什么可说的,然后往下再往下呢,就是咱这个字典表了,注意观察它这个字典表是不是又关联了两个呀,对吧?呃,为啥要关联两个呢?因为我们这儿有两个编码需要去拿,对不对,那其中一个呢是什么?是那个支付的方式,这是拿支付方式,那个它是幺幺开头的啊,那一个是支付宝一个微信一银联对吧?那还有一个是谁呢?是不是就还是那个来源呀,对吧?来直接回车来就这几个来源,那一共需要拿两个啊,当然这俩东西我要想只写一遍,咱可以怎么做来。
10:08
是不是还是用那个C,呃,对吧?呃,C啊CDE就是common table expression对吧?公共表表达式with对吧?也是可以实现只写一遍的啊,这个理解一下好了,有同学,那截止到现在这些子查询咱们该看的都看完了,那至于在上边咱们需要怎么做,大家应该知道吧,这是首日状改对不对?我们拿到的是很多历史上的支付成功的操作记录,对不对?那所以说我们需需要需要怎么做动态分区对吧?来,Insert right到咱这张表,然后呢,使用一个动态分区就完事了,当然这个动态分区字段的值应该是来自于那个回调时间call back time,这一点大家要搞清楚啊。好了,各位同学,那截止到现在我们就已经完成了这张表的首日装载了啊来,那完成之后视频我给它停一下。来来,各位同学,刚才这张表的首日状载咱已经完成了,那接下来了,我们看一下它的每日状载,每日呢,我们在这呢,还是以15号的数据为例啊,那当然15号的数据没有,我们还是保证逻辑是准确的就行,呃,那我们这个所谓的每日装载,那咱们的核心的任务应该是什么呢?咱的核心任务应该是是啥?核心任务应该是啥?是不是寻找15号这一天的是不是那个支付成功的操作记录啊,对吧?啊是这样的,那从哪去找呢?那基本上还是之前的那个思路啊,还是得从哪儿,从pay info里边先去找到15号支付成功的order info,然后呢,再去关联我们这个相应的订单明细,对不对,也是这样一个逻辑啊,从这个S课跟上面那个差不多,哎,我就还是继续的改啊,来拿过来。
11:33
肯能是C,来咱们看一下这个怎么改啊,来我们还是从子查询开始改起,一点点看,呃,那他这第一个子查询是这个订单明细对吧,其实这个可能直接改它,你不知道怎么改,咱这应该还是以以谁为准的,以这个payment的in份为准,对吧?咱先改这个,改成这个再改下边来那我现在先看一下他咱要改应该怎么改,嗯,我们需要从这张表里边找到15号这一天的什么东西,是不是那个支付成功的操作记录啊,对吧?OK,好,那这个怎么着,首先分区这个没什么可说的,可能得改一下,对吧,得改成是不是15号的分区啊,对吧?哎,这一点应该是能想明白了,那接下来呢,下边怎么改类型,我们要什么类型的。
12:16
啊,这个怎么去怎么去判断,还是那句话啊,由于这张表从15号之后拿到的就是insert update delete的那种操作,对不对,那你到底需要什么样的类型的呢?这个取决于是不是支付成功是如何影响到这张表的呀,对吧?好,那现在咱们回忆一下支付成功是怎样延行的,这张表是不是应该是诶修改一条数据啊,把它找到那个配面银份,当我支付成功的时候是不是,呃,理论上它这会发现一个修改的操作,对吧?它会把你之前insert进来那条数据找到,找到之后呢,是不是会修改里边的payment status,修改call back,修改call back content是一个修改操作,对吧?所以说在这儿呢,我们应当寻找诶这个呃,Update类型的数据,那之后呢,还得保证什么呢?保证你修改的字段得是payment letters,并且得保证改完之后的值是1002才行啊,对不对,是这样的一个逻辑啊,所以在这呢,我们把这个给它,哎,完善一下就行了,首先类型呢,我们应该找那个update类型,这个in此咱不要了,来一个up好,那之后呢。
13:16
排列保障是不是修改了字段包含那个payment status啊,对吧?那是不是还是用咱之前那个方式去判断就行了,先用map case来获得这个old里边的所有的K,然后它会反映出一个数组,对吧?然后呢,我们再判断这个数组里边有没有那个特定的元素,来一个a contain,然后呢,里边看它有没有诶,这个pay men,然后呢,Pas status好了,那这样一来的话呢,就能确保本次修改的字段是payment status了,那之后呢,我们还得保证是不是这个字段修改完之后的值是1602才行啊,对吧?那是不是正好就是这么写对吧?因为对于update类型的操作而言,Date里放的就是修改之后的值,对不对?那直接这么写,那就完事了。OK,那截止到现在,我们这个子查询相当于就已经诶给它改完了,哎,就已经改完了啊好,那改完之后呢,我们再继续往上看,各位同学往上走,哎,那这个子查询是不是也要做出相应的调整,对不对,那这个咱们怎么调整?
14:14
这个其实跟刚才那个取消订单,跟上午那个取消订单是不是应该是一样的道理,对不对,为什么啊,首先咱们得搞清楚,我这儿能不能直接改成15,这儿能不能直接改成音色的。能不能行?这个显然是不行的,为什么不行的,还是那句话,下边咱拿到的是什么,是15号支付成功的订单对不对,那我上边你要是这么写的话,你拿到的是什么,是15号是不是下单的这个明细啊,对不对,OK,那咱们大家都知道,那我15号这个支付成功的订单,那他的下单日期呢,可能是15,也可能是14,对不对,那你要这么写是不是14号的那些,呃,这个明细咱就拿不到了呀,对吧?啊是这样,所以前面呢,咱们还是得拿两天得拿,诶当天的以及前一天的,诶这个一定要注意啊,那在呃,用用再拿,再再往前的嘛,比如说13号到12号的用拿嘛,那那个就不用了,为啥?因为还是那句话,因为你下单到支付的时间,这个不可能会无限的长,对吧,通常也就是半小时俩小时,不会超过一天100情况下啊,这个理解一下,所以在这儿呢,我们这儿应该怎么写,应该跟前面是不是那种写法保持一致就行,对吧,我们去复制一个就行啊来咱们随便找一个,是不是应该就是这种写法就可以了,对吧?来拿过来我们再回到刚。
15:26
浪的这个紫查询应该是这儿,OK ctrl为咱应该是这样去拿就行了,诶拿当天的跟前一天的,然后类型的这两种类型都可以啊行了,那这个咱也就相当于改完了,他完事之后我们再往下走,哎,我们现在改第三一个法询,第三一个是谁。是order in for对不对?Order in for,这上面咱应该怎么去改呀?这个应该怎么改?这个怎么改?嗯,就是要知道怎么改,咱得知道我们现在跟他照的主要的哎,目标是为什么要跟他照照,我们跟他照的原因是什么呀。
16:02
之所以要跟order info去join是为了拿什么,是为了拿到我们上边得到的这个,诶,支付成功的订单明细是不是所属的province ID啊,对吧,咱是不是拿这个东西啊,没问题吧,所以说我们必须得保证什么,必须得保证就是这个子查询对不对,它返回的结果里边得包含什么,得包含我上边这些支付成功的明细所对应的所有的order info才行。大家说是不是这个道理啊,对不对?OK,那也就是在这儿呢,我们应当返回什么呀?是不是返回15号支付成功的订单因份就可以了,没错,上面是15号支付成功的明细,我这儿是不是只需要找到15号支付成功的订单就OK了,是不是就对应上了?没问题吧?好,那关键问题拿到怎样能找到15号支付成功的订单?怎样能找到?怎样能找到15号支付成功的订单?
17:02
这能不能准确的找到,15号支付成功的订单能不能找到。应该是能找着的啊,OK啊,为为什么能找着呢?前面咱们讲过啊,我是不是只要有一个支付成功的操作就会引发咱们order info这张表当中的一个变化呀,对吧,对不对,只要有一个支付登务操作,那我这边就会有一个update类型,Update类型操作发生,对吧?那所以说是不是就会对应着一条update类,Update类型的一个就是变更操作记录啊,对吧?所以说我们要想找到15号支付成功的明细所对应的这个订单,我们只需要去找order ino什么样就行了,去找它的update类,Update类型的操作是不是就完事了,对吧?当然呢,这里边呢,我们得根据具体的修改逻辑去进行进一步的过滤才行啊,不能要所有的W的操作啊,OK,那完之后我们来看一看这个具体怎么去找,怎么去找,那就分析呗,你看一看支付成功的操作对这张表会产生什么样的影响,对欧德连锁会产生什么样的影响。支付成功会对order因O产生什么影响啊,其实咱们是不是讲过呀,对吧,是不是首先它会让这张表的一条数据发生是不是相应的一个修改,对吧?那我修改的逻辑是什么样的呢?是不应该是首先修改的字段是orders之后呢?它改完之后的值应该变成什么?1002是不是才可以,对不对,102是已支付的状态嘛,对不对?那所以说在这儿我们是不是直接这么去过滤就可以了,对不对?首先我把这个分区先改成15,那之后呢,类型我应该要那个update类型的对吧?Up,那之后呢,我得保证什么,本次你修改的字段是谁来,我把这个给它复制一下,跟这个模板差不多对吧?诶,得保证本次修改的字段里边得包含是不是那个O的下划线s tas啊对吧,那而且还得保证修改之后的值得是1003是不是才行,对吧?那这样一来的话,我们这儿相当于又找到了什么,找到了6月15号这一天里边的什么样的订单。
18:57
是不是那个支付成功的订单了呀,对吧?OK,好,那上边是6月15号支付成功的明细,下边是6月15号支付成功的订单对不对,那上边下边是不是就能够对应上了,对不对?那这样一来我们就已经能拿到上面所有的明细所属的province ID了,哎,这一定要注意啊,对吧?那这块咱们搞定之后,我们再往下看这个子查询咱们应该怎么改。
19:22
诶,这个子产权是不是还是这个订单明细和活动的关联表啊,对吧,前面大也讲过,就是这张表的数据如果会发生变化,那它肯定也是跟谁保持一致的,跟明细是一致的,他俩是同步写入的,对吧?所以明细拿你拿哪天的数据,那我下边这个关联表是不是就得拿哪天的数据啊,对不对,所以这块呢,是一样的道理啊,所以这我们就直接把它诶一改那就完事了,它改了之后这个诶它是不是也是同理的,明细跟优惠券也是同理,直接CTRL位搞定,然后下面这个呢,相对比较简单,只需要改成15,这个呢也是15,那就OK了,诶这个其实相对来说都比较简单,行了,完成之后我们再往上走,最后呢,我们把这个select语句再给它改一下就OK了啊,那这个呢,我们给它先删除,这是动态分区字段的值咱不要了,那上面DT等于哪一天呢?我们给它写上2020杠零六杠幺幺几啊幺五,诶那就完事了,好了,那这张表的每日状态咱也就算是完成了啊,完成之后视频我给他停一下。
我来说两句