00:00
好,那接下来呢,咱们去创建一个主表,然后呢,跟这个维表进行一个关联,对吧,我们更重要的看这个事情啊,看能不能关联上啊。呃,那首先呢,跟重要的一个点是在于什么呢?我们退回来啊,退到这边。Look up join,它呢,需要基于这个处理时间做join,也就是说在关联的时候要加上这么个东西。你必须要加它,你不加它它就不行,对吧,因为人家告诉你了,它是基于这个处理时间来的啊,那也就是说我们在构建这个主表的时候,要加一个PT processing time处理时间才可以啊好呃,那接下来呢,我们就看一看这玩意儿到底应该怎么玩,对吧。这个就不要了。然后呢,我们就打开一个文档,这个我就放着,因为等会儿呢,这玩意我还得拿过来,还得用对吧?呃,那在哪呢,我们给大家说一下,在。
01:02
这。时间分配器,这对吧,点开点开好以后呢,它有两种啊,那一个呢,是怎么提取,第二个是processing time。那现在呢,它是基于这个处理时间的,所以呢,咱们要看这两种方式,第一种呢,定义在这个DDL里边。啊,所谓的地点就是这个,就是你可以通过这种方式直接去创建一张表。对吧,这个叫DDL介表语句吗?不是DDL对吧?还有一种方式来,还有一种叫什么。Data string to tablesion,就是说将硫转化为表的时候,去添加那硫转化为表。这有啊。这个地方咱们不是把硫转化为表吗?创建一个临时视图对吧,哎,这后面是硫,这个呢是表明哎将硫转化为表,那我们用硫转化为表吧,这种方式对吧,因为我流呢,我直接。
02:01
我直接拿过来对吧,啊这个呢,注意掉。这个入料就不做打印了,对吧,好这边呢构建。叫40秒。对吧,流表啊拿过来好,那咱们呢,就得到了一个这个word sensor DS,我们就用这个流啊去创建一张表的同时加上咱们的处理时间,因为有两种方式啊,第一种呢,D点这里边怎么定义的,大家看啊在这。你接表的时候,你自己加一个额外的字段,叫as pro time。这个use anytime就是你的。处理时间啊,这是第一种,第二种呢,在流转表的时候,对吧,那怎么做呢,在这边。给一个,然后接下来把这个名字写一下,加一个点time。啊,那么你这张表就有了一个字段,多一个字段对吧,但是呢,你不要写table.create view啊,这个不行,对吧,你得这样写叫from data stream,按照它的来对吧,好,这边呢,构建叫table,因为点。
03:08
From data stream第一个位置放一个whats对吧,那后面呢,放咱们的。字段,Dollar。然后最后PD.time。对吧,好,嗯,那咱们呢,这个地方是我的三,我的3IDVCTS,好,那咱们。到了。ID,哎,找一下这个包,呃,我看一下用这个。Table点。API。这个啊表达式对吧,第一个ID。啊,我们这样把字段呢,我们这样写啊,第一个是ID字段对吧,第二个咱们是VC啊。VC好,第三个是TS,那我们都保留呗,对吧。
04:01
DS最后一个呢,是处理时间啊,那。括号这边呢,它叫什么pro啊,没必要啊,这个名字随便取我就叫PT就得了,但是呢,你一定要调用一下谁啊。Time。一定要调用一下。OK吧,CTRL加V,那我们就得到了一张表。啊,得到了一张表,那接下来呢,我们去join啊join的时候呢,们用这种表不习惯,我们还是把它转成我们习惯的那个视图,对吧,那就table inv.create view,然后呢,这个位置给一个。T1啊,就是我们的T1表啊呃,主流表,然后呢,后面给一个table。好,那这个事实表。咱们就构建好了。啊,对于这款东西大家有多少印象,我我想了解一下。我,我这写的挺热闹啊,大家可能看着一脸懵逼,你在写什么东西?能跟上吗?能行吗?
05:02
Circle啊。大家在开这个项目,学习弗林格CDC以及克里奥之前讲的弗林格circle。啊都还可以对吧,啊都还可以就行了,那我们就继续嘞。反正肯定有人不愿意扣,那我也没办法对吧,啊,不愿意扣这个一还是二啊。OK吧,其实这个应该弗林S说实话离大家学项目还是比较近的。对吧,因为你学完flink s之后。就学的弗林CDC,学的克雷,然后就开了项目。对吧,当然项目呢,已经五天了,也一周了。啊,已经一周了,对吧。因为上周四开始学的啊,不是上周五,上周五在我进班的对吧。好,那咱们这个呢,就。搞定。对吧,这个实时表就构建好了,接下来呢,写状语可没使用。
06:05
事实表关联。微了。并反应结果。可以了啊,咱们做这个事情好。呃,那接下来呢,咱们这样,我用这个ID啊跟这个。Dic code就关联可以吧,因为这个东西呢,我们虽然叫什么what s ts,但是我数据随便给嘛,对吧,啊随便给啊,啊那这个关联的话,那就正常的作用啊,但是呢,你要加一点点东西。Table也没点。Circle query。我先把这个写好啊,接下来呢,我们来写这个关联啊,呃,这边呢,字段我拿一下啊。这是为表的字段对吧,嗯,咱们呢写。谁那个的。四个空格啊c select的,然后呢,主表咱们叫叫什么叫T表还是T啊好咱们叫T表对吧,好那c select t一点。
07:09
ID。啊,然后呢,T一点。VC啊,什么TS我就不要了啊,就要这两个字段啊,然后呢,我要一个base DC对吧,我取一个别名叫DC点。要一个什么呢?这个扣的我就不要了,因为这个扣的呢,是跟他一个。注意啊,它呢,等会我要他俩关联去,Join join on字段就是它俩,所以呢,我有一个ID就够了,对吧,另外一个不要了啊。好。那dic吧,我加一个嫩。可以吧,啊加一个name好,那接下来呢。正常而言,我们from这个主表,主表叫什么叫T表对吧,T啊这个就提取join。Join,咱们的叫贝。DC好,那我们取别名叫DC啊,你们可以加一个S也行啊,好,然后呢啊,我们正常的这样写啊,什么t1.ad等于。
08:10
DC点叫D扣的。对吧。D的好,这就是咱们这样一个搜狗,但是呢,这样不行,缺什么。我们是不是一直在强调它这个lookup状语得根据。处理时间来,所以呢,你这样写还行,你得加一点东西。加什么加这个。在这个位置你加他。啊,你要加个东西,那这得改对吧,这个呢,不是o.pro time,我们是谁呢?我们是PE的。PT字段,注意是处理时间字段这个。知道吧,啊,我把它改写一下啊,就必须要加这个东西才可以啊,行,那我把这个呢拿过来。往这儿。
09:01
一放。啊,往这一放,同理,CTRL加R,把这个杠N呢替换成一个。空格啊,这个呢,移下来对吧,好对它呢,我们做个什么事。XQ的。点print做一个打印可以了,我们把这个表呢做一个打印啊,接下来我们来做一个。测试啊,首先咱们这个流呢,从8888端口来读数据的,我们看一下啊,这个呢停掉。重启这个9999呢,就没有什么作用了啊,先不用管了,对吧,把这个启动了,启动之后呢,来运行啊。诶,这边有问题,我看一下啊。呃,Column name not found,诶,这个地方。哦,这个地方写错了,这不是name啊,这是什么,我刚才粘的粘上了应该是。Di name吧,对吧?啊,这个是拿错了,所以他报错说我们这个名字不存在啊,刚才应该只粘了这个name啊,好,那么重新运行一下,这个报错还是比较明显的,对吧,他直接告诉我们说找不到那个列名嘛,啊,不认识那个列名。
10:14
呃,那这边呢,就启动了,就刚才那一点东西写错了对吧?好,那我们呢,在这里面挑一个ID,我就挑这个1001未支付可以吧,我就想打印这个未支付,那我怎么写呢,这样啊在这边。我输一个1001,后面两个字段其实无所谓对吧,我搞一个23搞一个八啊,就为了不报错,那些都是我不写行不行,不写不行,那报错对吧,得写并写好。看打印的什么100123未支付。看见没?对吧,立马就关联了买色狗,关键的点还不如在这儿来,比如说我把这个改成未支付aaaaa对吧。保存,接下来呢,注意啊,我程序没停啊,我程序没停。
11:00
我干什么事呢?我再输一次,大家注意看啊,走出来结果了。未支付aaaaa。实时更新的,因为它是什么呢?它是流失数据来了。他根据ID去查一下MY。对吧,所以你买这个,只要数据发生了改变,我呢是可以实时获取到的。因为我每一次都会去做这个什么查询。听懂。嗯。能明白吗?对吧,或者说你你把这个数据呢,你再改回来。对吧,我还是叫这个。未支付。对吧,还是叫未支付,那你还输1001。45。走。你看,又变成了未支付了。对吧,这就S就是我们硫与一个为表直接做关联。
12:02
就是这样,看来我们弗林是不是非常强大呀,大家感觉。有没有感觉到?弗林格是不是相当强大呀,对吧?好,这是其中的一个测试啊,那我把这个。还有一个测试,还有什么测试呢,咱们这样,我们之前是不是跟他说了这个表可以放到。Catch里边。当然这个catch其实就是一个状态,对吧?啊,在flink里边都是状态。啊呃。那这玩意儿怎么操作呢?来看啊在这。呃。好,这没有,那我们还是退回来。卢,不是啊。嗯,我直接到这儿来吧。他呢,有一个我直接这样找啊,我就不往回退了,好像还挺远的,对吧,Table API啊在这。呃。JDBC。点开。
13:00
找一下啊。它参数什么呢。嗯。这个。叫lookup,作为lookup表用的。对吧?Look catch.ma最多保留的行数。对吧,好,那接下来lookup catch.ttl一个时间。看见没对吧,当然了,你可以点到look up catch,诶这边呢,他给你去整个的做了一个介绍,对吧,你可以缓存这个。数据。啊,你可以缓存这个数据。对吧,好,那比如说我就按照这个行数。对吧。啊,那你看啊,呃,Look catch is disabled by default就默认呢是关闭的,所以我们能看到呢,每一次更新了,它立马能够去查到,对吧?好比如说我加一个这么个参数啊,来看到C。
14:09
呃,我在哪呢?在这个位置加一下在这个地方对吧,它属于这个参数嘛,我把它放在这儿,然后呢,我把这个粘一下啊。往这一放对吧,然后呢,这个拿过来CRLXL把这个替换掉对吧?呃,替换掉以后呢。咱们这个地方写一个十啊,假如说我让它缓存十条。可以吧,我让他缓存十条来注意看啊,来运行啊。当然你这边呢,可以根据,嗯,我看一下啊,这边报错了。啊,应该是我那个地方这个十应该有问题吧。还有什么on?Able to create a source for reading table。啊,那这个应该这样写,这个就不要这个单引号应该啊。就直接是十啊。我运行一下看,嗯。
15:03
他。他必须要两个同时写吗?哦,他应该两个同时写对。呃,就这个十没问题啊,我们看一下刚才那个报错啊,我们再运行一下对吧,他应该要求我们两个同时写。对吧。他说。二选其一,要不然是所有的,或者什么none of。那就是要不然都不写,要不然都写。能明白吧,啊,所以刚才呢,偷个懒还不行啊,想偷个懒还不行,那么这个呢,写一下啊。把这个拿过来啊,就两个都写呗,大不了就两个都写呗,这个也无所谓对吧。呃,这边呢,我再复制一份。啊,当然这个十还是这样,确实是这样啊,呃,然后呢,把这个拿回来。这边呢,我们写一个hour啊,但是但是这个单位是hour还是hour斯我忘了啊,但是我们试一下啊,这个呢不太记得,因为主要刚才我想看一下官方文档,好像他也没介绍这个单位要不要这个S啊,那没关系,我们看他报报错呗,对吧。
16:11
看有没有啊,好像没说对吧,没说这个单位怎么写,它底下也没有例子吧。好像没有例子。这种就比较恶心了,对吧。哎,好像是可以啊,应该可以写one o对吧。好,那因为我有时候这些东西忘了啊,就是它加不加S我忘了,但是我知道our second minutes这个单位可以因为时间嘛,T点对吧,我就写一个一个小时啊十条对吧,这个时候我们再来测一下啊,来让大家看一下这个效果跟刚才有什么不同。首先呢,我还输一个1001。注意1001的还是未支付对吧,还是这个啊。来,我把它输进去,大家看输进去。他还是未支付没有毛病对吧,那现在呢,未支付就被缓存下来了,对吧?好,那我呢把未支付改一下。嘿。
17:00
那大家思考一个问题,我现在再输一个幺零零幺四十五,它打印未支付这个地方是未支付还是未支付AA,大家告诉我。你觉得有A还是没A?对吧,是。带A的还是不带A的?是未支付还是未支付AA呀。这个应该能明白吧。我之前就说过了对吧,他呢,如果缓存有就不去买S找了,我现在查过一次1001缓存有没有啊,必然有了对吧?好,那我输进去啊,看他打印的还是谁啊未支付。看见没?对吧,啊,所以呢,你这个东西啊。你这个东西,那我问大家这个东西你什么时候用。就是加这个catch,你什么时候用,你告诉我。
18:04
什么业务场景可以用啊?就是这个维表lookup表当中啊,我们要。加这个缓存主表特别大。这有关系吗?你这个答的我就很懵,主表特别大是什么意思啊?没懂。对,就是维表数据不变。啊,就是这个catch啊,我给大家做一个注释对吧。他在什么时候用的就是维表数据不变。啊,或者。或者那它会变化对吧,会变化,但是呢,你会变化啊或者。
19:06
二吧,我们写个二啊,二会改变。啊,但是。我们数据的。准确度。要求不高。对吧,就是我允许你有一些用的是老的数据,对吧,没更新掉,我允许你用一些老的数据是不是也可以啊,我要求不高啊,只要你关联上就行了,你用的是老的还是新的,我不是特别的在意啊,有一些误差我无所谓。对吧,或者第一种肯定可以啊,为表数据不变。对吧?微妙数据不变,那当然可以啊,当然你加了catch,你效率会变高,但如果你的数据会发生改变。那么你的准确性会降低。能明白吧,这个我相信大家应该能明白哈,没问题吧。
20:02
有问题吗?没问题的,扣一啊。给我个反馈啊,我觉得这个应该问题不大啊,嗯,就就很好想明白,那首先数据不变肯定没问题对吧,你都不变了,你只有新增那没问题对吧,或者说你会改变,但是呢,我对于这个数据准确性要求不是那么高,你有一些呢,用的老的数据对吧,那无非就关联老的数据,你关联的肯定还是买S的数据。但是是老的对吧,最新的数据呢,可能没关联上,那过一会儿呢,它关联上了。对吧,但是以后的数据,那这种呢,也可以OK吧,好,这是我们所讲的这个点啊,就是lookup表的一个draw啊叫lookup join,那这个弗林的功能还是异常强大的吧,对吧,好把这个。
我来说两句