00:00
那来首先看一下,第一步建立初始化拉链表,那还记得初始化拉链表啥特点不来往上找一下。建立初始化拉链表就一步啊啊,老简单了,取出你的原来的用户表,在它末尾加上两个字段就行了,一个是开始时间,一个是结束时间,就这么简单,初始化栏的表,那来吧。那初始化拉截表,你看我这里面怎么做的啊,这是第一个DW地程dim user in for啊,这是历史啊,历史拉链表的意思啊,好,那下面你看前面这些字段都属于谁呢?都属于正常的OD层,OD层的用户那张表。啊,正常的,只是在他末尾加上这么两个字段,开始时间,结束时间。就完事了啊,就完事了,那包括像这张表里面插入数据,你看怎么插的啊,Insert over right,像这张表里面插数据,那数据来于哪呢?来源于ods乘U专心缝。
01:01
上面这些字段原封不动照搬过来,只是在它末尾加上这么两个。开始时间,结束时间。就没了啊没了哈,那好,我们先把这个初始化栏表准备好。直接复制过来。这个应该没问题吧。说话了。那初始化完拉链表之后,接下来是不是就要有这个新增和变化的数据进来呀?你想一想,我现在呢,是这个3月10号往上走。这块比如说这块呢,目前呢,是第一次来初始化是3月10号的数据,那第二天的话,他应该有3月11号的数据。而且对这里的数据呢,应该有新增和变化。对吧,啊,新增和变化,也就是说你需要导入进来新增和变化的数据。
02:04
这也是买SQ里的数据的变化,3月11号,那3月11号其实我们数据已经导过来了吧,还记得吧,3月11号的数据我们已经倒过来了,之前导的时候导了一个3月10号和一个三月11。啊,三加11,那这里面你,而且这里面新增和变化导的时候,我们取的就是新增和变化。啊,就是把它取过来哈,那这块你看我这个笔记上啊诶。看我这个笔记。往下走,那下面这块呢,是制作当日变动的一个数据,比如说制作11号的变动数据,那这块怎么制作呢?嗯,最好表内有创建时间和变动时间啊,这呢是说要求设计表结构的时候啊,要求有开始时间和和这个操作时间,咱们正好有哈,有cur time和那通过这两个就能,那如果没有这两个的话,那么呢。比如说有的时候啊,他们设计这个后台数据库的时候,没有设计开始时间和变动时间,那也没关系,我们后续呢,会讲这个实时里面项目里面会用到一个开他会监控,只要买蛇口里面有数据变化,我就把你同步过来啊,就同步过来啊行呃,逐行对比前后的两天的数据检查啊,这个啥意思呢?如果说呃,这个别人确实没给你提供,你跟Java的人去沟通呢,人家又不愿意搭理你啊,那这时候你只能想办法了啊,自己去用这个MD5啊进行一个啊判断啊数据的一个不同,那这个呢,是不建议采用哈,不建议采用啊,还有呢,是要求业务部门提供呃变动流水。
03:35
靠你的人品和颜值了哈,没有我这种人品和颜值的话,你很难这个呃,搞得动这些产品妹子或者是这个Java后台的人哈,嗯,通常情况下前两种就够了啊,不用那么担心,正常情况下表里面都会有创建时间和变动时间,同时呢,我们也会用这种实时监控的这种框架开头啊,还有mavi啊啊进行一个处理哈,你说后面这个呢,你是想办法让他们把这两个字段。
04:01
加上那靠什么呢?靠人品和颜值,靠请客吃饭对吧,啊请客吃饭。正常没问题,呃,这是这块,那之后呢,是你看odso in for这张表导入过来,新增个变化的数据啊,所以不用处理啊,我们是在3月11号里面生成对应的数据啊,生成对应数据哈,通过s school把它导过来,这是之前的一个导法啊,导法然后ods层导入呢,是。ADS to adys DB啊,这是一层的档啊,现在咱们已经不用担心了,数据3月11号的应该是有的,查一下。嗯,查一下ods的数据。Ods u。你看你的U缝里面有没有。等于2020杠零三杠幺幺,如果有这一天的数据就没问题啊。
05:06
还有对吧,你看我这里面是有这个3月11号,3月11号的数据的。啊,你们也有啊,之前都让你们去导了,所以说这块呢就没问题啊没问题,那没问题的话,也说这块数据默认你已经准备好了,准备好之后呢,先合并变动税据,再追加到呃到插入到临时表,那这块是干什么呢?这块是准备一张临时表。往上走,往上走。回忆一下,稍微回忆一下初始化拉链表的时候,是3月10号数据,有了3月11号这块数据,我们刚才其实已经准备好了,之前这个数据库里面就有,那现在要做的事就是把这两张表对它进行一个合并,合并到这里面,那合并的过程当中看,这是历史的3月10号,这是3月11号。
06:06
我们直接要往这里合并的时候,中间要建一个临时表,先往这里面覆盖,覆盖完之后它再往上回血,那你现在就需要一张用户拉链临时表,那大家想一想,用户拉链临时表它的结构应该跟谁一模一样?它其实应该跟用户拉链表是一模一样的,它只起到了一个中间缓冲的一个作用。对吧,所有的字段都应该是一模一样,那好,那我们就建一个这张表哈,那建一个这张表。建一个叫DW DM user in for history history是拉链表加一个temp,那表示临时的含义,对吧,我们说了后缀temp是临时的含义,那这里面所有的字段都是一模一样的啊,一模一样。那。OK,那现在呢?我们就要向这张临时表里面去插入数据。
07:04
那像这张临时表里面插入数据的话。还记得吗?我之前说过,新增和变化的数据。怎么只是在它末尾加上开始时间和结束时间?嗯,那我这块啊,我看看这块先过来。时间紧啊,稍微快一点,看看大家能不能理解,我要向这张表里面插入数据。先from对吧,下面这么整体一个套路,我相信大家没问题,像这里面插,只不过呢,插的过程当中呢,需要一个拼接啊,运到拼接这里面,那拼的话我先找到新增和变化的数据,那新增和变化数据怎么来呢?看看这个能不能看懂。我现在查询的是ods乘这个u in for。
08:03
3月11号的,3月11号不就是新增和变化的数据吗?啊,因为历史的拉列表里存的是3月10号的。三月十一九九九开始时间,结束时间,这就完事了。哎,这也说就拿到了这个新增和变化,那我还有一个历史的,历史的原来的这里面数据呢。哎,那下面你要拼接上,你说要发生修改的字段,你说哪个字段呢。往上涨。啊,我最喜欢把这个图打开吧,这张图是比较好的啊。还是把这张图打开F5。这张图当中,首先这张表我们已经准备好了,这里面的数据也准备好了,而且呢,我现在先写的分支呢,是把这里面新增和变化的数据在它末尾加上了两列。
09:09
加上两列之后就会形成什么呢事物?它啊,它它那现在唯一要解决的就是把这个历史拉链表里的这个字段,把它修改成。他就完事了。哎,就干这么一件事,那干这件事看一下代码怎么来实现了。怎么来实现这个逻辑的呢?我直接拼上啊,直接写上简单一点,不敲了啊这块。看一看这块逻辑能不能看懂。它是一个UNO拼接,那unior拼接它做了什么事呢?首先呢是uiui来源于ods u质音缝这张表,那这张表记得是谁吗?
10:06
O diu,这是三月11,三月11,三月11不就相当于是这里的数据吗?是什么?是新增和变化的数据对吧?这里面存的是新增和变化的数据,好,那你上面这张表是谁?看他是这个in history没有。那说明这张表是历史的拉链表。和今天的新增和变化数据进行拼接,那找到了哈,找到了,找到谁呢?这一块呢是历史的初始化拉力表,这一块呢是新增和变化的数据,这两个要开始进行噪音了啊,进行噪音,噪音主要解决这个字段的事儿,那它怎么照音的呢?我是用上面历史的拉链表去left照下面这个。下面这个,那再看这张图,那我是用这张表去left招它,那你招音出来会什么效果呢?这里面是123,这里面是245 123和245。
11:12
那噪音的life的噪音的结果。噪音的结果,那会保留123,同时会匹配上二。匹配上二,那匹配上二之后,你看他怎么做的。比如说它们两个进行一关联的话,能够匹配的上一个二,那如果就是它,它的ID如果不为空。啊,不为空,那想想如果不为空的话,就相当于有数据。啊,部署去,然后后面又加了一个校验是U,它的and time是它啊这是相当于是一个嗯,更准确的一个校验啊,那你先看它就行,先看它假如说这个UID不为空,那这个UID是谁呢。是。
12:00
UID是这里面你跟它进行噪音的时候不为空,那这个二它就不为空,那像这个四和五它是为空的,匹配不上啊,啊没有数据进行跟大家关联不就空了吗?那如果它不为空,就说明我要对这里的数据进行修改,那怎么修改呢?哎,如果它不为空的话,我是对的二减一。这是艾的减一当,前天减一一,这个一当就是三月11吧,3月11号去减一,那减完之后就变成了3月10号啊3月10号那你看剪完的效果。那如果说你这是这个3月10号啊,3月10号,我今天这里的数据呢,是3月11号。3月11号,那处理完之后呢,这块它应该变成我要覆盖这个字段哈,覆盖字段哎呀,这个算不太好啊,那这个字段呢,就变成了这个历史的数据。历史的数据,你这里面历史的就是这个三月一。
13:02
啊,因为我现在站的是今天嘛,今天这里面是1月2号,那1月2号减一,就是它就是在这个要变化这个时间基础上一减一,就是前一天嘛,啊一个断点啊呃,行,那回来。那这块就结束了啊,你看这块呢,就直接拼完了,然后把这个time复制。啊,如果这里面是这个不等于空,是它如果等于空的话,放的就是这个andtime,就是仍然是999啊,然是999哈,也就说这个唯一的逻辑就在这儿判断它是否这个关联的上。放大一下。这块大家可能看不太清啊,放大一下。你说最核心的逻辑就在哪呢?这张表跟它进行噪音的时候,如果能够关联上,说明这里的这个ID它不为空,不为空的话它干什么事呢?不为空的话,它修改的是它这里的andtime。
14:00
直接把这个other time这块给它修改掉,把它覆盖,那覆盖它变成什么呢?变成当前这个日期,它的日期减一,那你像我这张表里应该是他的日期减一,那就变成1月1号。因为其他字段都已经搞定了,这不都是新增和变化的数据吗?嗯,这块呢,稍微这个花点时间啊,理解一下哈,也是这个,呃,逻辑性呢比较强啊比较强,那这块呢,我就不拿这个写了哈,直接把这个粘过来试一下。等。执行一下啊,执行一下。执行完之后啊,相当于这个这张临时表里面就有数据了,那临时表有数据的话,那你还需要往下走哪呢?临时表有数据了。
15:03
往上。相当于目前这张表里有数据了,也说刚才他们两个进行招引,这张表有数,有数据之后,你还需要覆盖回原来的用户拉链表里面啊,需要给他over right回来哈,让这个用户拉链表里面进行一个更新。它覆盖完之后看一下。更新操作就是insert over right到这个初始化拉链表,那用谁呢?用这个历史拉链表进行对数据的一个更新。执行完毕再覆盖,覆盖之后啊,你就可以查当前的数据了哈,查数据。我查的是ID,开始时间结束时间啊,这张历史列表。看看做完的拉里苗长啥样啊?这里面我查的是这个是这些一个呢是ID,然后开始时间结束时间对应的历史列表,那你看吧,这里面比较典型的,你看这是这个七号ID,它呢开始时间3月10号到3月10号,然后变化了三月C到这,你说你能看到这种变化,那就说明这个拉链表已经做成了,那你再往上上找找这块。
16:16
你看这个六号呢,是三月13月十,三月11到这儿还有吗?哈,这上面都有啊,这上面都有47。要领啊要啊说这样呢,就是最终的一个拉链的一个效果哈,啊那个效果,嗯,可能这个需要大家点时间去自己去消化消化。啊,刚一上来的话也是啊,相对来说呢,会难一些哈。
我来说两句