00:00
呃,来吧,各位同学,那咱接下来呢,就来分析分析这张表的数据状态最终应该怎么去实现啊,来吧,那现在我们先把这个所有的精力放在它的首日装载上面,先看首日啊,首日那咱假定还是2020年的6月14号,好吧,那现在我们就来看一看首日怎么做,首日咱们要实现的最终的目标是拿到历史上的所有的取消的明细,对不对,没问题吧,好,那现在问题来了,怎么找?大体的思路应该是先找到历史上取消的older info,对不对?在关联历史上所有的older detail是不是就能拿到取消的older detail了?应该是这样一个模型啊,好,那现在问题来了,怎样去找历史上的取消的older info呢?但是不是首先得找到older info这张表才行,没问题吧,找到older info这在哪呢?在这呢?好,那这就是我们历史上所有的older info没问题吧?好,那现在从里边怎么找,怎么找那个取消根据啥去找呢?哎,是不是根据状态去找啊,对吧?大家知道older stas指的就是什么,指的就是这个订单的状态,对吧?但是准确的来说啊,咱们这张表当中,咱看到的这个older status是这一个订单的什么状态,相当于是。
01:13
最终状态吧,是截止到我们这个14号这一天的最终状态吧,是这个道理吧,啊,因为业务系统当中,我这只会保留什么,只会保留最新状态,没没问题吧,OK,好,那也就是现在这个订单目前的状态是103,这个订单目前是1006,而我们要找的是什么样的来着,是已取消的订单,而且是历史上的已取消的订单啊OK,这一点咱们先得明确,好,那进来我们看看这个到底怎么找,要想知道怎么找,我们得知道这些状态都是啥意思,对吧?这个从哪去看呢?自然表它是幺零开头的,对吧?那我们就找到那个订单表,然后呢,诶,看一看幺零,诶这是不是就是幺零开头的,在这呢,我们一共有几个状态呢?一共有如下这几个,来简单看一看,里边首先有一个是什么未支付的状态,诶,已支付的状态,已取消的状态,已完成的状态,退款中的状态,退款完成的状态,一共有如下几个状态,好,那我怎样根据这个状态去筛选咱们那个历史上的取消到O后怎么去找呢?啊要想。
02:13
知道怎么找,咱们得知道这些状态啊,它是怎么去变化的,对吧?好,那接下来呢,我就以一个订单的生命周期为例,给大家说一说,就是这些订单到底什么,这些状态到底什么时候会出现啊,那首先那我们,呃,一个订单在最开始的时候肯定是什么呀,是下单对吧,下完单之后他立即就会变成什么状态,1001的状态,未已支付的状态对吧?好,那完之后,那你下完单之后,那我们这个订单的状态呢,可能会有不同的这个去向啊,他可能会怎么做呢?我可能会去支付对不对,那支付完之后,那咱这个订单的状态就会变成什么,就会变成1002,相当于是已支付的状态,对吧?那有没有可能说我下完单之后我没去支付呢?有可能对吧,你不支付有两种情况,一种是你不管它,不管它是不是,到时候它会自动超时取消对不对,也可能你会管它,你手动的点一下取消,对吧,但是甭管是哪种方式,那我这个最终的状态都是什么状态呢?
03:07
是不是都是已取消的状态啊,对吧?好,那现在问一下大家,如果一个订单它的状态已经变成了已取消了,好,那你说他还会不会再发生变化。还会不会再发生变化,其实就不会了,也就是如果订单他的状态变成已取消了,OK,那这就是他的最终状态了吧,对,他就不会再发生变化了啊,但是如果一个订单我的状态变成了已支付了,那他就他还它就不会再变了吗?并不是那样了,他说还可能会再继续往下变化呀,对吧?好,那所以说那这儿相当于是一个已取消的状态,我们这写一个1003啊,OK,这已经是一个相当是最终状态了,OK,这是那个101的啊,这个呢是一个已支付1002的状态,对吧?好,那下来我们继续往下走,那再往下呢,呃,你支付之后,那这个订单它会怎么变化呢?怎么变化呢?咱们先按照一个顺利的流程去走啊,OK,你已经支付了,那再往后应该是怎么样的一个过程,正常是不是商家会去发货呀,对吧?啊发货的话呢,这里边其实正常会有一个已发货的状态,但在那儿没有啊,是因为我们模拟的这个业务数据呢,并没有去考虑这个物流这个业务,以在这儿没有这个什么已发货的状态,所以在这儿咱就不多说,然后继往下走,那完成之后,呃,发货之后,最终我们,呃,买家是不是会收到这个商品,对吧?那这个订单的状态是不是还会再发生变化,那发生什么样的变化啊对,如果你点了确认收货了,好,那这个订单的状态就会变成1005,相当是一个什么状态呢?化是11004啊,应该是一个已完成的一个状态啊,是这样的啊,OK,好,那完成之后这个订单还有没有可能再发生变化呢。
04:37
有可能发生变化对吧,就是我们这儿模拟的是一个顺利的过程,对不对,但是我们用户他在收到货物之后,或者是付完款收到货物之前,对不?他都可能会怎么样,都可能会退款啊,对吧?那甭管是在这儿还是在这儿他执行的一个退款操作,那我们的订单都会变成什么状态,1005退款中的状态对不对?那退款中完之后,是不是中间会走一系列的流程啊,对吧?这个流程走完之后,如果退款真正的完成了,我们商家,我这个买家呢,收到了最终的退款了,那这个状态还会再发生变化,变成啥呢?变成106退款完成啊是这样的啊,这就是咱们这些订单状态的一个诶变化的一个过程,咱们大家稍微的了解一下就行好了,那现在我们这些状态都搞清楚了,现在再回过头来,咱们再看一看我们当前的任务啊,咱当前的任务是什么来着,我们需要从这一大堆数据当中找到历史上的那些取消的这个订单,对不对?好,那这边能不能找到,怎么找,能不能直接。
05:37
等于等于谁等于1003,这个能不能行。可不可以,这个其实是可以的啊,为什么啊,因为103咱们知道是已取消的状态对吧?而且我们前面提到过,只要这个订单它的状态变成103已取消了,那它还会发生变化吗?就不会再发生变化了,对不对?那所以说只要咱们这个order sta等于103,那就一定能证明它是一个历史上的取消的older involve对吧?诶,这1.1定要给他搞清楚好了,那接下来呢,咱们就再继续往下进行,呃,那现在,呃,我为了让大家深刻的去理解这个older standard这个字段的特点啊,我再举一个例子啊,比如说将来呢,我们有一个这样的这个业务过程叫做什么呢?
06:19
叫做支付成功的业务过程,能理解吧,支付成功的业务,支付成功的业过程,我们是不是理论上也得去先找到支付成功的订单呀,对吧?好,那我问一下大家,你说我能不能从这张表当中找到支付成功的订单,历史上的也是找历史上的。对不对,也根据orders去找那个支付成功的订单,能不能找到,能不能找得找得怎么找。如果能找怎么找啊,如果找不全,为什么找不全,哎,这给大家分析分析啊,首先那已成功啊,就是已成支付成功对不对,那我的状态里就会变成什么,会变成已支付对不对,能能能理解吧,会变成已支付,这一点大家能搞得搞清楚好那我能不能说直接来一个order,等于1002去找历史上的支付成功的订单呢?能能行吗?不行,这个找不全为什么?很简单,假如说有一个订单,它的最新状除以这个是只报存什么最新状态对吧?诶,我最新状态假如说是一个1006 106理论上是一个什么状态,是一个退款完成的状态对吧?OK,那那你说这个订单它能不能说也对应了一个历史的支付功一个操作呢?也对应对吧,为啥?因为你退款的前提是什么,你得付款对不对,是这样的,那所以说你这个你要找这种什么支付成功的这种操作记录,你就不能用什么,直接用这个order sta等于1002了,这个就不行了,哎,但是呢,我们这个取消它是比较特殊的取消,为什么特殊的,因为你取消了之后,这个状态它就不会再变了。
07:47
能理解吧,那所以说你才能够直接用这个older stas等于1003去过滤的,这一点大家要稍微的体会一下啊,对,那个完成之后我们就呃回到咱们这个三上面来啊,咱们开始写三了,那在这呢,首先我需要先写一个select,然后呢,From from谁是不应该是ods层的O是不是info INC啊对吧?在这呢,我们需要拿到它的第一天的这个分区零六杠幺几是不是114啊,对吧?好,那完成之后继续往下走,下面怎么办?是不是也得先过滤一下对吧,应该是TY p type等于boot s TP对不对,然后杠insert,这个没啥问题对吧?好,那完成之后接下来继续走,那下边我们需要拿什么字段,首先要拿第一个就是什么,就是它的I,对吧?因为你需要用它去关联下边的明细嘛,对吧,得拿到取消的明细,这是第一点,然后其他的用不用拿也得拿啊,因为最终咱这个表里边需要用的什么user ID pro ID,那我们明细表里是不是没有啊,对吧?所以在这我们也要顺带的把它给查出来,来一个date.user下面ID,再来一个date.pro。
08:47
跟ced对吧,好查一下数据,咱是不是能够查出来呀,对吧,现在咱们得到的这些ID,这就是什么,就是所谓的历史上的是不是取消的那个订单呀,对吧,没问题吧,好,那接下来我们还要不要拿其他的东西呢。
09:02
要不要拿其他的东西。要不要要不要,你要知道将来咱们得拿什么来着,得拿取消的明细对不对,OK啊,那取消的明细里边有没有一个取消时间。有吧,取消操作得有一个取消时间嘛,对吧,那我下来取消时间,我应该从哪张表里拿,我是从明细表里拿还是从in表里拿。明细表里有没有那个所谓的取消时间,实际上是没有的,因为你取消的时候,咱们这张表根本就不变呀,对吧,它只有一个cur time,可time指的是什么?是下单时间,它不是那个取消的时间,对吧?所以取消时间咱们要拿得从哪呢?你得从order info里边拿,对吧?好,那older info里边咱拿哪个字段呢?来我们找到order info,呃,找到older info跑多少钱在这呢?好,那这大面里谁可以作为那个取消的时间,来咱们找一找,哎,对,操作时间是不是可以作为取消的时间,对不对?为啥这个其实前面讲过啊,就是所谓的alltime,它指的是什么?指的是我那个只要订单状态发生变化,它是不是就跟着变呀,对吧?OK,好,那如果我那个订单状态它是什么?是1003,那也就是它是一个已取消的状态对不对,那这个时间其实相当于就是你的103状态对应的时间吧,对不对?所以说在这儿呢,我们应该拿oper time作为咱们那个所谓的cons取消时间,所以在这呢,还得再拿一个字段啊,叫做data,点这个呃,Op oper。
10:28
啊,对吧,那这个其实就是咱们所谓的是不是cons time嘛,对吧,来下下片来一个time,这个没啥问题吧,OK,好,那截止到现在呢,我们这儿所需的这个字段呢,咱们基本上呃就全部拿到了,诶这个框写错了吧,应该是CEL啊ZL好了,那这个字段咱诶还少写了个T啊,少写个M,好,那这个字段咱们就都拿到了,他拿到之后我们再继续往下走,下边咱们还需要拿哪个哪个表的字段。下边说就拿明细就完事了,没问题吧,是不是已经拿到了取消的for了,再关联一个明细是不是就完事了,对吧?明细这个呢,我们的写法其实应该跟哪是一样的,跟我们那个下的那个明细的写法是不是应该是一样的,对吧?这个我就不再手写了,我直接给它copy一下,复制过来就完事了,OK啊好,那咱们现在就给放在这儿好了,那截止到现在,那咱这个明细也就算是拿到了,拿到之后我们再往下走,下边来说我得关联谁。
11:18
下边有。其实跟上面是不是一样,对吧,是不是也得去拿什么it ID啊,还有也得拿什么库房ID,是不是也得拿这些东西啊,对吧,那包括这个编码咱是不是也得拿呀,对吧?那所以说实际上这个跟上面那个下单是不是拿的子查询是一样的,几乎上对几乎是一样的,所以在这儿呢,我就不在一个一个去诶手写了啊,那现在呢,我们把上边那个下单的首日装载里边的这部分内容全部给它粘出来,咱就不再一点写了,来,我直接拿过来啊,我拿到哪应该我应该是得拿到这个位置CTRLC拿过来,诶之后呢,我们给它放在这个位置CTRLV好了,那现在呢,我是带着别名来的啊OK,那现在呢,我们只只需要干啥,把上面这个稍微给它调整调整,是不是就能够完成这个servel来对吧?好,那现在我们把上面这个给CTRLX放在一个括号里,诶给它起个别名,这个其实拿到是那个取消的order info对吧,在这起个别名叫OI,那这个我们到的相当于是。
12:11
这相当于是历史上的所有的下单命细胞没问题吧,OK,那咱这这个也给它拿到CTRLX好,这个拿过来CTRLV我放在这里面来好,这个起个边名,我们管它叫什么叫做OD好,那现在我们所有的子查询是不是都已经就绪了呀,对吧?这拿的就是跟之前一样的,这个没什么可说的啊,那接下来我们看一看最终咱们这个job应该怎么去做,最终是不是得关联起来,对吧,怎么关联呢?这回还能不能像之前一样,什么直接来个left什么的,能不能行?能不能行,能不能行,这个咱们再分析分析啊,就是说我们两个子查询,我在join的时候,我到底采用哪种join方式,这个取决于什么啊,这个不是随便写对吧?取决于什么呀?取决于两点,第一点就是你这两个子查询啊,就是他们数据的一个包含关系啊,是一个包括关系什么意思呢?是OK,是左边这个包含右边这个,还是说右边这个包含左边这个,还是说这两边呢互不包含,你得取,首先你得明确他们的包含关系什么样的,那其次一点是什么呢?你还得明确,就是说你最终想保留的是哪部分数据,对吧?你把这两点搞清楚,那你这个招的方式你就知道选谁了。好,那现在咱们来分析分析啊,那你说这个跟这个是不是得先做一个关联啊,对吧,那它俩的包含关系现在是什么样的,首先咱们得知道,首先它俩将来关联的时候,我们是用哪个字段进行关联,是不是得用那个older ID关联,对不对,用他的ID去关联的OID没问题吧?哎,用它关联好,那从order ID这个角度上来考虑。
13:44
它俩的包含关系应该是什么样的?很简单,首先你要知道这个里边只有什么样的o.ID只有历史上的取消的OID没取消的它没有对吧?咱这是不是已经过,诶诶这个有没有过滤,诶诶这个咱们没做过滤是吧?啊忘了过滤了啊,这个得得过滤一下啊得过滤咱们得下边忘了写过滤条件了是吧?得写上啊这个过滤条件刚才咱们说的是什么来着,是那个呃,Data塔点order DR order s staso对吧?得等于啥?得等于1003才行对吧?这是咱们需要的对不对啊,这个刚才忘了写了,怎么刚才没人提醒吧,OK啊,那记住啊,总那这个呢,是以里边指标什么样的指标完取消的OID对吧?好,那下边这个紫查询里边的OID是什么?
14:29
注意你要知道咱们这儿是不是拿到的是这张表当中十四二分区的全部数据啊,相当于是对不对,也就是这里边的OID,相当于是什么是历史上所有的O没问题吧,那所以说这两边呢,相当于是这样的一个包含关系吧,是不是应该是右边是包含左边的没问题吧?好,那现在我们要的是什么样的。我们要的是只只要取消的吧,对不对,所以说我们应该以左边这个为准吧,没问题吧,那所以说在这儿呢,你要想以左边为准,你在这儿应该用哪种这样方式呢。
15:00
其实你用啥都行,我用left行不行。可以left以它为准是不是就OK呀,没问题,好,那我用in the照行不行也行,对不对,因为in the照只保留两边共有的部分了,对吧?那所以说你用left照in the在这结果都是一样的,这一点大家要给它搞清楚啊好了,那完成之后呢,我们这儿直接用join得了啊,咱们用照好,那draw完之后呢,我们这是不是得写一个连接条件啊,对吧?那连接起应该是on on什么on oi.id得等于OD点,是不是下划线O这可以这往下走OID啊对吧?来往下走来来一个ID那就完事了,那剩下的这些子查询呢?我是不是继续用left照就行,对不对,OK,大家要知道啊,就是这种多表关联的时候,注意是多表关联的时候啊,那我们这个实际的这个照应顺序应该是什么样的呢?对吧?咱们这是好几个子查询,是不是连着关联呀,对吧?那咱们实际上的这个操作序是什么样的,大家知道吗?清楚吗?首是应该这样的啊,就是OK,首先我第一个表跟第二个表是不是会先做一个照呀,对吧?它俩照之后跟第三个表关联的时候,它是怎么操作的,它实际上是用前两张表的一个join的结果去跟第三张表照,同理是前两前三张的结果跟第四张表照是这样的啊,实际这样一个逻辑,所以说大家来看一看,我们这儿前两个紫砂群join完之后,得到的结果就是什么?就是以取消的明细了,对不对,那咱是不是就是以他俩为主,然后让其他子群逐个的跟他进行left round就完事了,对吧?诶是这样的一个逻辑,所以这块呢是没有问题的,下边就直接left round就行了啊好了,那截止到现在呢,我们就已经拿到了历史上的所有。
16:37
我的取消的订单所对应的明细了,那都拿到之后,剩下的事就简单了,我们说只需要来一个inser or right table,呃,当然得来一个select,着急了,我们得先来一个select,是不得先把里边所有字段先不都选出来,我们才能做那个最终的in对吧?好,那这个选字段这个事儿我就不再一点写了,我们找一下文档啊,我们把这个文档当中的这个选字段的这一部分,咱们给它粘过来,来CTRLCL全拿过来,嗯,来放在这个位置CTRL位好了,那这样一来的话呢,我们相当于就已经拿到了我们所需要的这个呃字段了啊诶,当然文档当中这个拿到之后,他这报错了,这个为啥报错,文档当中的别名是不是写错了呀,对吧?少写这个C吧,对不对,咱给他补上啊,来这个别名错了,倒也不会影响最终的结果啊,这个理解一下好了,同学,那截止到现在我们这个呃,Select的就全部都select出来了,当然你要注意观察,这是不是他多选了一个钻呀,对吧,给谁用的,是不是还是给动态分区用的,你看它是是不是用那个取消时间做的动态分区,对不对,这个理解一下啊好,那最终呢,我们来一个ins inside right。
17:37
就后边加上谁DWD,然后呢是交易域的,应该是是不是取消CNCL这个表啊对吧,后边来一个part的里边呢,仍然是写一个DT字段,那就完事了,别的就不用写了啊好了同学,那截止到现在呢,我们就已经完成了这张的首日装载了啊好了,完成之后视频我给他停一下。呃,来吧,各位同学,我们再来看一下最终的每日状态怎么去实现,来分析分析吧,这个每日咱怎么做?首先还是得明确一下咱每日要做的工作是什么,每日我们要做的工作应该是寻找什么15号这一天的取消的明细,对吧?OK,那咱们去寻找的这个大体的思路也得是什么啊,也得是先找到15号这一天取消的order ino的操作对不对,然后呢,再用它去关联明细,是不是才能拿到取消的明细啊,对吧?哎,这1.1定要搞清楚,好,那咱们现在假定当前的日期是六月15,好,来吧,那咱们看一看这个怎么去走。
18:34
怎样去找取消order info的操作,怎样去找取消order info的操作,是不是应该是来自于older info那张表啊,对吧,对不对,OK,那呃,我们从order ino那张表里去找这个取消的操作的时候,咱们应该怎么找呢?怎么找是不是还是那句话,就是首先你得明确取消的这个操作是如何影响到咱们这张表的吧,对不对,OK,那为他是怎么影响这张表的。
19:00
取消明细对取消的这个操作对吧,取消订单的操作是怎样影响到O这张表怎影响的。是因三一条还是修改一条,应该是修改一条吧,对吧?那修改的逻辑是什么呢?他改谁?他应该是改状态对吧?OK,他会把状态改成什么状态改成103对不对?这是不是就是取消order info的操作呀,对吧?那所以说我们一会是不是得从这张表里边的in的update操作当中去寻找刚刚咱们所说的那种修改操作,没没问题吧?OK,好,那接下来呢,咱们就开始去做啊好,那找到这个操作之后,接下来要做什么操作呢?是不是还是得去跟那什么older detail进行关联,跟那些表应行关联,是不是才能找到最终的这个数据啊,对吧?那所以实际上最终这个四二写起来结构跟首日是不是也应该差不太多,对吧?所以在这咱们就不再一点写了,我们还是基于它进行改造啊来CTRLC咱们拿下来之后呢,我放在这来吧,那咱们现在就开始改了,首先还是从子查询开始改起啊来,我们先改第一个自查询,呃,第一个自查询是还是old in错那张表对不对,那这回我们应该首先得把分区是不是得改一下对不对,我们给改成什么类型,改成这个是15的一个类型就完事了,对吧?OK,那接下来呢,我们继续哎,往下进。
20:08
行,那下边咱们怎么改。下边怎么改?下边怎么改,这个怎么改,诶这个CTRLZCTRLZ啊下边怎么改15改完了对不对,然后呢。这个改成UPC的类型是不是阿类型是啊,这个咱们前面说过了啊,因为取消订单这个操作对这张表的影响不就是修改嘛,对吧?诶肯定是修改,这个肯定没啥问题的,那接下来其他的还不用,用不用调整,得调整一下啊,那为什么得调整一下呢?就是首先你得知道这张表它确实是每天会发生变化,但是我每次变化,我变化的都不一定都是这个什么older status字段吧,对不对,没问题吧,所以说我必须得保证你本次这个修改操作,你们改的得是这个字段才行,没问题吧,那他怎样去保证它呢?很简单,那就是按了一下吧,是不是还是用咱们之前那个方法去判断就行,哪个方法来着是不是?首先我们可以先用一个map case去获取这个old的里边的所有的是不是这个字段呀,对吧,所有的K对吧,判断完之后呢,接下来怎么办?是不是判断一下它里边有没有那个older字段就就完事了,对吧?还是那个逻辑跟之前是一样的啊,所以在这呢,我们来一个array是不是contains就完事了对吧先。
21:22
先把这个数组放进去,然后呢,判断哪个字段是不是就是older status这个字段,那就完事了,对吧?诶能理解吧,那这样一来呢,我们就能够确保本次修改的字段里边是有order,为什么呢?因为前面讲过old里边它只会有什么样的字段来着,修改字段对不对,只要保证它里边有它就够了,行,那现在我们继续往下看,那下边呢?呃,我们还得保证什么呢?还得保证你这个字段啊,你本次改完之后得是1003才行,对吧?好,那诶其实这是不是正好这么写就行了。没问题吧,为啥?因为date里边存放的就是什么来着,修改之后的数据对不对,那我可以保证它修改之后的这个字段是什么,是103,那是不是就完事了对不对,那相当于我们这样就能够找到,诶这个6月15号这一天的是不是取消到older info啊对吧?哎,现在找到了,好找到之后咱们继续往下走,那下边咱得改啥,是不是得改一下我们下边这个订单的明细啊对不对,明细这块咱怎么改?
22:19
明细这咱怎么改怎么改呀,呃,首先时间是不是肯定得改,对不对,那改成哪一天呢。给了15那类型呢。这面里边类型改成类型,哎,这张表是不是只会ins呀,对吧,那所以在这呢,咱是不是直接ins那就完事了,对不对,行不行,这能不能行,这个结果对不对。这个结果呢,其实肯定是有问题的,为什么又会有问题啊,首先咱们得搞清楚一点,各位同学,咱们现在是在往哪张表里装载数据,是在往取消的这个实时表里装载数据,对吧?OK,所以说我这必须得拿到什么,必须得拿到15号这一天所有的取消的明细,对不对?没问题吧?好,那你现在你这么写,能拿到所有的取消明细吗?能不能拿到?
23:06
这个有可能是拿不到的,为什么?诶你要搞清楚一点,首先上边这个子查询咱们返回的是什么。是15号取消的order info,没问题吧,是所有15号取消的order info,对不对?然后你要搞清楚啊,你15号取消的订单,他可能是在什么时候下的订单,可能是在是不是前一天下的订单,有有这种可能性吗?那为啥呢?因为你要知道你下单到取消订单之间是不是可能会隔一段时间呀,对不对,隔了一段间单,但不同的平台可能有不同的规定啊,比如举例子,那咱们以某一个平台为例,他可能比如说我下完单之后啊,那OK,我给你30分钟的支付时间,如果30分钟之内你支付成功了,那OK,那就算OK,那如果没成功的,那就自动怎么样会取消的对不对?也就是说通常我下单时间到这这个取消时间中间是不是可能会隔一段时间,这隔的时间有长有短,但是始终肯定是会隔一段时间的,那隔的这段时间有有没有可能出现一个情况跨天呀,有可能对不对啊,对吧,你比如说我12点多这个下了单,我凌晨的时候我取消了,对不对,可能会跨天啊,是这样的啊,那所以说那我们这儿应该能得到一个这样的结论,就是说你十。
24:14
五号取消的订单,他可能是14号下的,也可能是15号下的,那可能是13号下的,大概率是不可能的,为啥呢?因为呃不会有那么长的时间,对吧,一般你比如说俩小时不支付,我就给你取消,或者半个小时不支付我就给你取消,他一般不会跨两天对吧,最多快一天,比如可能是14号下的,可能是15号下的,这一点先搞清楚,而咱们现在你要是这么写的话,你拿到的只有什么。你只有15号的下单操作对不对,那所以说你上下一关联是不是这肯能会丢一部分数据啊,对吧,所以这个肯定你不能这么写啊,那所以在这儿咱得怎么去改一下。首先分区这个得得怎么改,得是当天的分区一节是不是前一天的呀,对吧?OK,那所以在这呢,咱们应该先把它改一下啊,应该是地梯是不是等于当天日期,或者是DT等于前一天日期啊对吧?前一天怎么获取,是不是应该用一个data at或data sub都行啊对吧?来我们先把当天日期零六杠155给它放进去,后面来减一个一好两天咱们是不是就已经拿到了,那这儿呢,前面有二,前面有案的在这儿呢,最好咱给它加一个括号对吧?还给它加上好,那这个完成之后,下边这要不要改呢?
25:22
这个要不要改,这个类型要不要改。类型其实理论上啊,假如说我们不考虑这个特殊情况,比如说我们现在呢,是我们数仓已经运行了一段时间了,OK,那我这这么写没事。但是你考虑到哎,第二天的时候,你第二天的15号的前一天它是什么?是14号,14号是我们说它的第一天对吧,你第一天咱们有音三的类型吗?没有,第一天全是波特四抓音刺了对不对?那所以在这儿呢,你直接写音刺就会导致是不是十四二那个数据你拿不到了,对吧?所以这个就不太合适了,如在这取能怎么办呢?也给它带来一个啥呀,再来一个二对吧,也来一个二,二什么呢?2TYPEB等于啥?等于不in对不对,SP然后杠inert,但实际上呢,只要过了第二天,我到了14,呃16号,我到了17号,到18号,他的前一天还会有不对,Iner有没有,这都是iner的,对吧?但是这个极端情况我们也需要考虑进来才行,所以在这呢,咱们得这么去写才可以CTRLX,我们这儿呢,来一括号,哎,是这样的啊好了同学,那截止到现在呢,我们这个订单明细才算是改完了,就这里边就是有一个大家很容易忽略的问题,就是说你可能想象不到,OK,我15号取消的订单,他是在呃,这个前一天下的,对吧,这一点可能有同学会忽略掉啊。
26:36
那这个一定得能够意识到才行,行了,那这咱们改完了之后,我们继续往下看,大家看一下,你说我们下边这应该怎么改。这个是谁是明细跟谁跟活动的关联表,对吧,这个咱要改应该怎么改,时间也得改,对不对,那我这个改成哪一天,是直接改成15,还是说既可能是15又可能是14。这个怎么改?直接写十五行不行。
27:00
呃,这个其实可能你直接想不太好,但是你这么去想,同学们你想一想,就是这张表的数据,它要是会发生变化的话,如果它会变啊,就是这个,呃,欧德X如果它会变,它跟谁是同步变的,跟older detail是不是同步变的呀,对吧?没问题吧,所以说你older detail你需要15或者14的,那我这张表是不是也是需要15或14的,对吧?因为他俩要变的话是一同变的嘛,对不对,那所以在这儿呢,诶这个过滤条件你跟它保持一致,那是不是就完事了。没问题吧,诶他俩是一样的道理啊,好了,那这个要是能想明白的话,那你说这个呢,其不是也是一样的对吧?所以咱这儿也是给它改成它就完事了,来来再往下走,下边这个这个其实相对来说就简单一点,这个其实只需要改成15那就完事了,对吧?诶好了同学,那截止到现在呢,诶我们这块也就算是紫砂全都都改完了,带完之后我们剩下的操作就简单了啊,是不是只需要把这个上边这个select语句稍微的调整一下就OK了,对不对,看一看这个怎么调整,首先我们需要先把去掉。这个咱得去掉不能要了,对吧,这是动态分区用的去掉,然后下一个是不是改这个位置啊对吧?DT得等于啥?哎2020杠零六杠幺五,哎,那这个就完事了,没问题吧,好了,那截止到现在呢,这块我们要改的内容就基本上全部都完成了啊行了,完成之后视频我给他停一下。
我来说两句