00:00
还有什么呢?我们只是把这块东西测完了,In join呢,我们就不聊了,它呢跟这个data stream其实一样的,就是你要给一个时间范围。对吧,你要给这个你看O这有两张表O对吧,然后呢,S。看见没?O跟S2张表对吧?然后呢,o.all time between,然后S减and。s.shift time对吧?啊,那当然了,你也可以起一个加in interval,那那这个是关联四个小时对吧?啊,它是这个范围去关联的啊,当然你也可以加,这是导join,就这样写就好了,对吧,给定一个时间啊,用两个用的是数据里边的时间做关联的啊呃,接下来呢,临时join他是join啊这个呢,也用到了处理时间跟这个。事件时间啊,两种这个我们就不聊啊,这个不聊,因为我们直接看这个lookup,这个对于我们来说比较重要,对吧,这就是两种时间语义嘛,对吧,那lookup。这个是什么事呢?就是说正常的我们呢,有一个流。
01:05
正常的,咱们呢有个流对吧,流呢,我要去关联这个维表。对吧,我就可以做成一张把这个。表啊,做成一张lookup表。啊,咱们就可以做成一张lookup表,然后呢,去关联这个lookup表。啊,就形成我们关联这个维表的一个操作。对吧,它这样的一个点啊,那首先呢,创建这个维表,那就这样。Create。Temp table对吧,临时表,然后呢,叫这个表明嘛,你随便取,然后字段with,你看这个地方呢,人家就是从什么。从my circle当中获取的一张表信息。对吧,他从MY里边获取的一个表信息之后呢,我们再来看它的一个关联哈,看它的关联在这。
02:01
怎么回事呢,看啊,呃,我们呢,有。O表O的表对吧,还有一个customers customers呢,就是这个维表啊,我们把它称为维表叫lookup表对吧?好,那从O表当中呢,去查一些东西,然后呢,这个customer c表呢,去查这个什么country对吧?Z啊呃,Draw for。关键点在于这儿,它跟传统的draw并不一样。他要干什么事呢?要加一个。Pro处理时间啊,而且这个处理时间字段是谁的呢?是这个O表的。是这个欧表的。凹表就是说你的这个实时表对吧,订单表,凹表实时表得带一个处理时间,然后你关联的时候必须要加上这个字段。啊,那是因为我们做维表关联的时候,后面呢,还会有那维表,你这个状态存多久,其实他可以把维表的数据。
03:02
放到状态里边去做存储,你可以给定一个时间。啊,当然你也可以不给时间,就是状态不存,不存的话,那每一次他都会去查买circleql,都会去检索买circle,如果说呢,你把这个加了一个缓存啊,它叫cash。他在catch,如果说你加了这个缓存,加了catch,那么你已经读过的数据,我从这里边先看,这里边如果有我就不访问MY搜,直接从这取,对吧,如果这个catchche没有,我再去访问MYS,把这个数据拿到,拿到以后呢,就给他放到这个catchche里边,那下一次对吧,在我没有过期的时候,你再访问了诶。就读到了,可以加速这个查询。对吧,就可以加速。查询啊,就是做这样的一个事情啊,呃,最重要的就是里边要一个这个处理时间,对吧,他跟我们平常看到的状意呢,不太一样,主要的点就在于这个。
04:01
处理时间上对吧,所以等会儿呢,我们要做这个look up join的时候呢,在我们构建这张表的时候,我们要加一个。处理时间字段。啊,要加一个处理时间字段,然后通过my circle去构建一张。为表。然后呢,把它俩关联起来,我们给大家演示一下可以吧,好来,我们把这个先好那。刚开始呢,我们先去写一下这个维表。OK吧,先写为表啊,再写这个事时表,因为事值表呢,我们发现他还要给一个这个处理时间啊,因为这边告诉我们了,早就说了过了的呀,他look果I join呢,Use about对吧,基于这个processing time time join这个语法之上的,所以你必须要有这个。时间字段啊,那这个东西呢,估计大家忘完了,应该不会写了,对吧,但没关系啊,等会儿呢,我们去跟大家去聊这个东西应该怎么去写,好吧,啊,等会就说啊啊,我们先呢写这个维表可以吧,先写维表,然后呢,我们可以尝试把这个维表打印一下,看能不能出结果啊好来到这边来。
05:11
我们再写一个叫。茯苓啊。零六。对吧,这个呢是。Look after all。Test。首先呢,我们要构建为表,那不管怎么样,第一步得有这个表的执行环境,对吧?好,那表执行环境呢,我就不写了,直接把这个拿过来啊,这个时间呢,状态时间我们也就。先不要,哎,少写了一个什么。买方法。往那一放。对吧,接下来呢,我们。查询。MY构建。Look up。表对吧,那table in点叫。XQ的circle这里边呢,我们就写这个建表语句对吧?好,那假如说咱们就用这张表作为我们的。
06:06
回表啊,那哪张呢,我们挑一下啊。我们就选一张表作为我们的微表,好吧?选这个。Base斯DC吧,因为未来我们就要用这张表,可以吧,我就用base dic啊这个码表作为我们的表,因为我未来维度退化呢,用的就是它啊,呃,Base DC我们呢,用它OK吧,好,这里边的字段我去拿一下啊。嗯,那我们就构建为表。在这边我们把这个先把语句写一下。啊,当然了,Lookup表我们叫lookup表,省得大家说这个什么其他好,其实lookup表呢,就是微表对吧?好,那么写一下叫create。Table啊,嗯,他还不叫这个table,它叫什么叫time table,我们尽量跟他跟这个观光岛来,刚开始学的时候对吧,尽量的,呃,跟他来对吧,当然这个小写大写这个无所谓啊,好大家来给个表明,那我们就叫贝斯。
07:14
这张表。可以吧?呃,然后接下来呢,写这个字段。啊,写我们的字段第一个呢,是dic扣的对吧。Dic扣的,然后呢,这个地方我们用嘛,我都用可以的啊。呃,第二个位置叫DC内。Three。啊嗯,要不我们就写两个对吧,因为后面感觉没什么用了,对吧,创建时间啊,操作时间啊,感觉没什么用啊,那我们就写两个就得了,对吧,这要注意啊,不是说买四个里边所有的字段都写上。啊,当然你可以都行,你为了以防万一吧,我们先都写啊,就是尽量的先保,保证他不出错对吧。
08:04
呃,叫parent扣他的一个。F,对吧,啊,那咱们呢也用啊。好,那还有一个create time叫time啊,我们写一下啊。嗯,应该没有写错吧,Spring如果写错了那就有问题了,对吧,因为它根据这个来定义的,好嗯,那这个搞定之后呢,大家看哎就没了,对吧,它就是写了几个字段啊之后呢。With。对吧,位置把这个拿过来,但是呢,这里边儿我告诉你,其实它还少了对吧,很明显少东西啊。没,没粘上。呃,GVC这个地方呢,我们是哈杜102对吧,3306,然后呢,咱们的数据库是什么,是G末杠211126杠。
09:09
Li,对吧,我的库名叫这个表明呢,咱们叫base dic这张表对吧?很明显这里边是不是少参数,大家想。你能看出来少参数吗?能不能看出来?这玩意儿,你觉得他能连我们的买色克吗?这个他能不能连我们的买色克呀。很明显不行,用户名和密码,对啊,天发现了对吧,你这玩意儿你要能连那都有鬼了对吧?凭什么你不给用户名和密码呢,对吧?好,那用户名密码怎么给呢?那家说这儿官方文档这么不严谨,确实啊,这个做的说实话不太严谨,你要连麦搜狗,你看下用户名密码对吧?好,那我们怎么找呢?这个地方到这来啊,我告诉你。你只能到这来找了,到这个连接器在table API对吧,这边呢,有一个JDBC的连接器,到这来找啊,点开。
10:14
呃,当然它需要导一个这个依赖啊,我们来检查一下这个JDBC的依赖有没有导,因为他需要用到这个连接器,对吧?好,那我们来看一下哈。嗯。嗯,My so CDC jdbc,哎,连接器已经倒了,这个就没有问题了,对吧,好那。我们来看啊,他要的参数有哪些,嗯。这是它最基本的对吧,啊,还是跟那个一样啊,你可以指定一个什么。主键啊,可以指定一个主键,当然呢,我们可以指定一个主键,对吧,等会我们可以看不指定主键能不能行,因为刚才我们看到文档当中它没有指定主键,这儿呢,突然又加了一个指定组件啊,那就搞不清楚了,对吧?好,那不管吧,那我们先把我们的内容先写上啊,Connect要。
11:03
这个URL table。还有一个。驱动对吧,哎,驱动。可选的默认值为呢,这些东西呢,都必选的对吧,当然假如呢,我们不给驱动,因为我们URL里边它是不是可能会自己找驱动呢,对吧,我们先不管,因为他呢也没给。也没给对吧,那我们暂时先不给啊,但是这个地方他还说这个可选的,为什么说可选的呢?也很正常,因为这个地方他可以说可选的,因为他是什么。它是JDBC。那如果我用JDBC连菲尼克斯呢?我用JPC连Phoenix呢,我用户名跟密码确实是可选的,对吧,但是其实他这种写法不好,因为你这都已经写了买circle了,那你就应该把这个用户名密码写上对吧?好,那我们不管,我们知道呀,我们肯定知道对吧,它叫user nameme,好把它拿过来啊呃,这个呢,在这儿加一个逗号对吧?嗯,然后呢,单引号把user name放过来啊,咱们呢,我这个地方是root啊。
12:05
这就根据官方文档来做学习,但是呢,官文档有时候给的东西他不全,你得自己能够知道对吧,当然你也可以不给,你不给他运行,他肯定会报错。你要会解决这个错误也可以对吧?好,那第二个还有一个password对吧,我就不自己写啊,直接搂过来哈。发错了,我呢是六个零对吧。好六个题,呃,驱动呢,暂时我们先就不给,对吧,我们就这样去创建一张表,还有这个组件呢,也没给。对吧,在这边的时候,他告诉我们,诶要这个主键,但没关系,如果说需要我就给一个就行了,对吧,好,那我把这个。拿过来,目前来说我们有两个东西,很明显的两个东西没给啊,第一个主见没给第二个。驱动对吧,因为我们已经写一头写了,他可能会自己找这个驱动呢,有可能对吧?啊如果不行我们就加一下这个驱动,因为在配置信息当中,他告诉我们,诶可能有这个驱动对吧,但是他也可选的。
13:11
啊,可选的。对吧,好,那这边他告诉我们了,他说什么呢?这个地方是JD bc driver的一个驱动名称,对吧,类名啊,然后use连接的ul in set,如果没有设置。It will。自动对吧,自动的从这个UR当中去获取啊,去装载啊,所以呢,我们刚才说了,有可能我们这个GDPC的协议头可以让他自己找到。他所需要用到的驱动对吧,好,那往这儿。一战。啊,往那一粘不好看,那没关系啊,CTRL加R把这个杠N啊你去掉,但是呢,你不要直接干掉,你给我加个空格。你把它替换成空格听懂对吧,因为这个杠N呢,你在这儿倒没有问题,你一旦干掉了,毕竟是字符串拼接。
14:01
你是不是有可能两个字符站挨着了,那就有问题了,对吧?好,咱们就有了这样一张表啊。接下来呢,我们先不做其他事情,我们把这张表打印一下,看能不能打印出来,对吧?好,打印这个微表。打印的表,那就是table,没点叫circle query select的新。From。叫贝DC。对吧,好。好,先啥也不干,我们就做一个打印啊,来变形啊。嗯。哎,可以打印看见没对吧,数据直接就出来了,但是呢,这个就直接结束了,因为它是一个有界流,相当于。懂吗?它是相当于一个有界者直接就打印出来了啊啊,那这个东西呢,为了让他看的更清楚一点,我们其实呢,就只要这两个东西啊,这个就不要了。
15:08
给大家看一下,那我少几个字段能不能行呢,运行。好,诶这个也可以对吧,有d code加d name。对吧,啊,当然他说这上面有一个小小的警告啊,这什么事呢。它是加载了我们这个驱动啊,这个东西呢,已经被啊new driver class is它啊就是加了一个CJ,就是类名改了啊,他就告诉你就是说什么事呢,他这样的方式啊,直接自动默认加载的是这个驱动。你要想不想看这个警告也可以,对吧,我们怎么做呢?C拿过来啊,或者说我们先拿谁先拿它。就为了不想看他,我们就加一个drive,因为它自动获取的这个东西已经怎么样。
16:00
过期了。你,你能看出来吗?啊,大家能能不能看出来。他告诉我们这个东西已经怎么样。过时了。对吧,诶还真不能叫过期了,应该叫过时了啊,所以呢,你要是想不不想看。这个红字对吧,咱们可以这样。来重音运行。能看到红字,其他就没了,啥也看不懂对吧,那这就没有红字了。啊,这就没有红字了。对吧,啊啊,那是因为刚才我们是不是看到了它可以就是你这玩意不写对吧,Not set不写你能够。自动装载,但是呢,它JDBC这个协议呢,装载的是老的对吧,过过时的,所以呢,你要想不想看到这个红色对吧?嗯,那你就加一个这个,同时呢,我们也测了主键不要可不可以。
17:04
可以对吧?呃,然后呢,字段跟表里边字段个数不一样,可不可以可以,但是你名字不能写错了,比如说我name写成了ne,对吧,这玩意可以吗?你觉得。就是dic name写成了ne。报错了不认识叫什么?No column不认识这个ne对吧?这是我们说的这个东西呢,你不能写错了,你可以少,但是你不能错。对吧,因为他是通过名字去取的。他是通过名字去取的,能听懂吧,对吧,这个等等的都给大家去测了哈。没毛病啦啊。好,那这样的话,我们还是保留这个全量的字段啊,保留全量字段,因为后面呢,我们可能不做打印了嘛,对吧。
18:00
Driver呃,诶这个driver它怎么写的我忘了啊,我运行一下,我把这个driver填一下啊,把这个driver填一下,不填的话,它它下一次还会给我们有这个红字就不爽啊,就很不爽,对吧,倒倒没有什么其他的,就感觉能我们能处理的就给他处理一下呗,对吧?啊,实在处理不了那就算了,那这样的话就好了,对吧,那到这个为止呢,咱们的尾表就构建好了。哎,他直接查这个买搜狗数据对吧。
我来说两句