00:00
好啊,刚才已经分析完毕了,那下面的话,我们来把它这个实现了啊,来把它实现了,那实现的话,那这块我们稍微写一下啊,写个框框啊,一点点来。呃,仍然是我们现在呢,是这是一个目标表,这是我们已有的这个数据源啊这么几个表,那好,那要向这里面插入数据。Insert table向这张表里面插入数据,那这张表呢?看一眼哦,分期表好。Partan,那现在啊,这块呢,就不适合你直接把这个分区给写死了,因为我现在写的这个三呃3月10号啊不合适,因为后面这个分区呢,它会变成三月八三月九三月十是一个动态的过程,那动态的过程呢,这块呢就放一个DT。后面拿一个字段来把它这个补齐就OK啊led from啊from from呢这里面也分两块啊,分两块这个数据一块呢,叫这个old的数据也说获取。
01:09
这个即将要覆被覆盖的分区是哪些分区哦,然后赵义张义上的下面的这张表呢,是一个新的表。你信代表的特点呢,是获取到3月10号所有的数据啊,然后他们两个呢,进行一个啊关联啊。啊,这样的一个结构哈,这样的一个结构,那首先这块呢,你要获取这个旧的数据啊,那获取旧的数据,那怎么获取呢?哎,嗯,Select下面一堆字段啊,From哪个表我从旧的,你要想拿旧的话,那就从这张表啊,虽然说这张表呢是刚创建里面,如果第一次操作的话,没有没有数据,那么你第二天第三天的时候,这里面就有历史数据了。哎,所以说不要着急啊,那就就拿从这里面去拿,那拿的话呢,就是外条件,哎,它这个DT怎么取。
02:07
比如说。这个DJ啊,它得印啊印下面这个里面的内容,那这就是一个查询。我从这里面。去获取我要即将覆盖的这个分区。那覆盖的分区,那这块怎么写呢。From from哪张表呢?From,我们刚产生的也是这里面有这个数据,从这里面去拿。啊,然后条件。DT等于2020杠零三杠幺零,那我现在从这里面拿的是3月10号这里面所有新增和变化的数据。那这个我要拿的是他的时间啊,我要拿它的时间,拿到的什么时间呢?领取时间。
03:06
所有这里面你这里面今天产生的数据的领取时间是对应的哪几个分区的数据。对吧,你是三月八三月九还是三月十都行。那你要今天产生的,那没没关系,那今天就往这放着就行了,直接往里面正常去查,那如果是三月八三月九,那我这块只要把你这个三月八三月九查取出来,那日后的话,我就需要对你这张表进行一个关联之后一个覆盖。啊整体的一个覆盖,那好,那这块呢,就是这个这化的啊,这是格式化啊正常你可能说有同学说这个放这个get time不就行了吗?但是get time这个格式啊,它是这个这样的,2020杠零三杠幺零,然号零零,冒号零零,再冒号零零,你需要对它一个截取处理。啊去梳理哈,那这块拿过来哈。嗯。
04:03
嗯,这都不骂他,然后呢。那这块呢,你需要放上它这把这个get time截取出来,年月日啊获取它,这样的话我们后续就方便去处理了,也就说这个time就跟这个结构呢,就是一样的对吧,啊一样的。行,那上面这块这个字段啊,这个字段,那这个字段呢,正常情况你要把这里面这个字段一个一个粘过来,对吧,我要查这些字段吗?啊一个一去,那这个呢,我就直接拿过来了哈。你可以自己手枪啊,不反对啊,比如说我要查询,嗯,这里面这里面所有的字段,From这张表,那表查哪一个分区的数据呢。哎,查的分区就是在今天这波数据里面当中get time。啊,这个就在这边分区当中,所有的get涉及到的分区。
05:02
涉及到了三月八三月九,也就是说这这里面这个三月八和三月九的数据啊,在未来的期间里面有人往里面添加数据了,想要往里面添加数据。那我就把这个对应分级的数据拎出来。啊,领出来了,因为三月八这块,你这个之前三月八领的券,在3月9号我要下单了,要用了,或者在3月10号我要用了。那就是把它拎出来,那拎出来这就是O的数据就已经准备好了,也说要覆被覆盖的数据,OK,那正要背覆盖的数据,OK啊,这块不是招引哈,这块是负招引,必须是这个。全麦连接啊赵行,那再往下下面的话这块呢,是要产生新的数据。那新的数据怎么取呢?哎,这张表里的数据就全部都是新的数据啊。对吧,你看这里面要么就是领取时间是今天,要么就是使用时间是今天,要么就是支付时间是今天,那不管哪一个是今天,我都会把它查出来进行一个操作。
06:02
对吧,都需要插入到未来的这张表里面去,那简单呢,那来吧。Select下面E是的啊,然后from from哪张表呢?就from这张表呗。啊,然后外边见。哎,然后DT等于那我都是今天的数据,那就2020杠零三杠幺零对吧,哎,0310,那上面这段这些字段给他补齐的话,补齐的话你从上面拿吧。就这些。OK呃,上面的旧表和下面的新表一样啊,不一样啊,上面的旧表呢,你看啊,上面旧表这是DTDT里面取的值呢,它是三月八之前说了啊,是三月八和三月九啊,撤回撤回啊行,那他懂了是吧?啊懂了就行啊,确实不太一样啊,不太一样,因为我查的是这个DWD层历史的数据,那你看我这下面呢,查的是ods层的数据啊,Ods层数据哈,行,那之后呢,他们两个进行一个关联。
07:08
关联的话呢,就是。O谁呀,O的ID啊,它的ID和这个的ID,你说它的编号和它的编号进行一个关联上就行了哈。相同的ID,那就是O。2ID等于ID。这样呢,就已经关联上。有说两张板过来上了,那剩下的事儿呢,就是中间这块,中间这块要往里面,往这里面覆盖,覆盖的话之前也说过哈,就这这就简单了哈,就义务判断啊,If判断首先第一个吧啊new.id对吧,if.ide is如果说它等于now的话。那么谁呢?o.ID。对吧,取它否则的话取谁呢?否则的话取的是6.id。
08:02
这样不就了吗?这样就了就么简单,那剩下他段一个一个啊,这个比较麻烦。直接粘过来。是吧,哎,这里都一样的哈,嗯,直接粘过来,来看一眼。啊,就长这样,也就是说new ID,如果它等于空,选择OID,否则的话是new,如果这个new的ID为空。那否则选新的啊,选新的那整个这些字段都覆盖完了,覆盖完了还差一个谁呢?差了它呀,你这个DT始终没给赋值啊。啊,你回忆一下,你始终那个DT没有负值,因为你这几个字段对应的是这里面这些字段还差一个值呢。X值,对这个动态这个数据进行这个赋值,你可以采用在这里面进行。赋值之前讲过对吧?哎,之前讲过那同学说了,那这个怎么赋值啊,哎,这个DT它是靠的是get time的时间戳进行创建分区的,咱们前提条件之前就说过,用的是这个get time,那就是new.get time is now。
09:16
如果它为空,那我这里面就是old。点get time,否则的话我取的是get time,这样吗?诶,这个应该是new的啊,New get time。有同学这样就没问题了,但是要注意哈,还是这个格式的事,BT它可是按照这个2020-03010,那你这个get time,它后面是有000冒号零零冒号零零这种格式。那你需要再次对它进行格式化,那格式化的话不就用它吗。把它填上。往左拉了哈,填上之后逗号,然后这里面YY也就是。
10:03
括号啊,一括号,这样是不是就OK了啊,这样就OK了。但是哈,但是有个注意事项,这既然是动态分区,动态分区你们之前讲过,它前面在执行这个语句的时候,要加一个什么呢?要加上这一句话,就非严格模式,就是动态模,动态这个分区啊,必须要在非严格模式下才能够执行。那你需要said have,这个参数就是动态part模式下设置成非严格模式,你才能是这样的去复制,否则的话,这里面就必须给一个固定值。啊,固定值哈,啊,这个不知道大家还是否记得哈,也说这个非严格模式和动态分区啊,记得这个事儿的同学帮我扣个一啊,就是动态分区这事。记得的,帮我扣个一。
11:01
嗯。那看来应该是只要一个人回复,应该就是讲过啊没没讲过吗?这个动态动态分区的形式,嗯。讲have的时候应该应该是讲过哈。忘了是吧,啊忘了的话稍微稍微回你说,那你可以这样,你这个你可以不加,不加的话,你看一会什么哈印象那没关系啊没关系啊,你不加这句话的时候,你一会儿咱们再试一下。首先呢,我先那个创建一张表哈,先把表创建了。表给他创建了。OK,然后呢,我们要向里面去插入数据,那插入数据啊,我先不粘这个动态分区这个事儿。来,你看他报什么异常啊啊,往里面插入数据。行,直接抛异常了,你看抛的啥。说这个什么exception啊,异常,然后动态分区,严格模式,Require at least one static,静态的分区列,也就是说你如果你处在这个严格模式下,你是必须要指定一个分区的。
12:16
回忆一下啊,回忆一下就是说动态分区属于严格模式下,严格模式状态下的话,你是必须要指定一个分区的。啊,那他提示你了,你看啊,这提示的多到位啊。Turn this off set这个值,然后非秧歌模式啊,这已经太到位了啊,太到位,怎么到位,直接咔。然后一复制先执行一下啊,你可以先执行一下,执行完之后呢,然后你再来这个执行下面这个代码。哎,我就直接都放在一起吧,啊都行哈。不用我就不粘那个了哈,上面已经执行过一次了,那你再来执行。你看现在就已经可以执行了啊。
13:03
一个就够啊,没有四个哈,就这一个就行。这一个就可以了,人给你提示的已经很到位了啊,你就按照它提示直接给就行了,其他的不用啊,其他的是控制别的的,这个是控制这个分区的吗。对,这是最大,最大分区数,这是安分期数。嗯,动态分区,嗯。那些都不用啊,你看我这实验已经执行成功了,执行成功之后啊,查一下这个对应的这个结果。Select形from DD层这个领用券的试试表,然后3月10号。对吧,哎,现在呢,这里面就已经有数据了啊,有数据了哈,OK,这个呢,就是整个这个累积40表的一个过程啊,累积四词表。啊嗯,这个逻辑呢,还是有点这个小难度的啊,小难度的,所以说呢,大家呢,嗯,还是要消化理解一下。
我来说两句