00:00
呃,接下来我们看下第十个,这个需求叫省份力度下单的汇总表,其实跟上面的需求呢如出一辙,要求的内容呢都是一样的,都是一样的啊,只不过说呢,它这个力度不太一样,要用的是这个省份的这个力度。对吧,啊在审判力度上,所以呢,最后就是关联为表要。关联的是省份,这个为表吧,所以我们要做的事情呢,来看一下,首先读取数据,接下来呢,转换结构啊为杰森杰森对象对吧?按照文一件当然是订单明细ID。对吧,还是下单需求啊,订单明细ID去虫啊,那去虫方案呢,咱们有两种可选对吧,开窗那种呢,其实之前就说了,不建议大家去这样去做对吧?啊,因为第一呢,如果你用滚动窗口,嗯,有可能呢,会划分到不同的窗口里边,那这样你就不能做驱虫,那有同学可能想,那我用绘画窗口呢。
01:02
对吧,绘画窗口呢,嗯,绘画窗口可以,但是呢,他跟我们所说的那个状态。那种方式驱虫它有什么区别啊,比如说你用状态。去存五秒钟,然后呢去去重对吧,那他他就是说什么呢,你第一条数据来了,诶然后假如说四秒后对吧,第二条数据来了,这中间呢,隔了四秒,那我到了第五秒的时候,我是不是立马就输出了。对吧,可能第二条数据来了以后,一秒就输出了,但如果你是这种情况下,你用会话窗口的,好会话窗口啊,呃,这一秒本来等到这个时间点,等到五秒的时候要输出,哎,但是在第四秒的时候呢,第二点数据来了,他要到第几秒才能输出啊,到第九秒才能输出,因为会画窗口,他要间隔五秒才可以,对吧?所以呢,呃,你有一条数据跟有多条数据它的延迟会不一样啊,延迟会变高对吧?所以呢,不建议大家用第二种啊,当然呃第三种是可以用的,如果呢,你。
02:07
右表的数据没用上,那完全可以用第三种方案,我给大家写的对吧?啊,这个是可以的啊,呃,那我们之前的这个下单以及他呢,都用的是第三种吧,好,那我们既然是相当于对前面的知识点做复习哈,这个需求呢,就是对前面知识点做一些巩固,那我们这里边儿去除呢,呃,我呢就用第一种方案。好吧,就是第一种啊,就不不从那个去粘了啊,用第一种用状态编程的方式做这个去重,然后转换数据结构呢,为我们这个扎病那里边呢,无非就是说有这个省份的信息呗,对吧,然后设置首续线,按照省份ID分组聚合,聚合好以后再。关联省份。理由还是一样的,对吧,因为我们把关联微表放在后面呢,先聚合再关联微表,我们数据量。
03:02
就下来了,数据量就下来了,对吧,最初呢,最后写到这个科house啊,其实就这个过程,那这个呢,我们也就不用说特别操心的去看了啊,因为跟我们前面都一样,无非呢,我们把这个驱虫啊,我不用了,不用这种了,在这里边咱们的驱虫方案你知道。他都直接画的这个波浪线对吧,告诉我们这玩意儿呢,它是重复的这个代码啊,都重复的代码啊,那没办法,我们之前写的确实重复的,因为咱们之前呢,用的是那个什么方式做了一个去重啊。咱们直接。用状态保留第一条吧,啊,那我们这个地方呢,准备用还是用状态编程,但是呢,我们不保留第一条,我们准备取这个最后一条。对吧,还是比较时间啊,比较两个数据的一个时间,OK吧,啊用这种方式啊,好,那这是我们整个的一个需求分析及思路啊,因为跟上面的一样,我就没有再去播这个。
04:01
PPT了对吧,好,那我们直接把这个截掉好,那么接下来呢,我们来把这个按照正常的来写一下,第一个啊,咱们这个建表,建表呢还是一样的有这个。诶。开窗时间。审份维度对吧?嗯,Auto auto amount2个值对吧?啊,那当然了,我们得考虑,呃,还是之前那个问题,我们可能呢,会有这个什么。重复的。订单。ID了,所以呢,这里边咱们还是用什么集合来存对吧,先不取这个次数啊,先用一个set啊跟上面都一样对吧,好好,那我们直接呢把这张表,因为我们开的啊,所以呢,我们就直接把这张表去。创建一下啊好,那接下来呢,开始coding啊,那第一个把这个实体类招聘我们得拿过来啊。在病包下又来了一个扎病,哎,那咱们的扎病呢,还是蛮多的,因为咱们需求比较多吧,对吧。
05:10
往内放好,那接下来呢,在这里边DWS层啊,那我们写我们的主类啊。好。嗯,那。第一个还是获取咱们的执行环境,对吧。第二。读取DWS。啊,DWD层这个自己是DW层读取DWD层,然后呢,卡卡那个主题啊,这个订单下单。数据主题对吧?啊,那消费这个数据啊,消费这个数据,然后呢,创建流,接下来呢,我们把这个数据转化成这个P对象啊,将每行数据转化为。
06:08
接算对象啊,转化为杰对象以后呢,咱们就可以干什么事了。先。做我们的第一次去重吧,啊做我们的去重啊,转化这对象之后呢,按照这个订单明细ID分组,然后呢去重对吧,我们在这个一起写一下,就不用写那么多的一个内容了。好,那去好种以后呢,我们再将每行数据转化为招聘。扎了。并对象对吧,转换我们这个对象啊,然后我们这个对象之后呢,我们就可以提取事件时间生成wordmark,然后呢去分组开通聚合,聚合好以后关联为表对吧,写到click house,诶那这就是我们整个的一个流程啊好,那这来呢,嗯,提取时间戳甚成mark。
07:09
商城,What,那接下来。啊,分组开窗。聚合,因为分组,咱们只要按照这个省份ID进行分组就行了,本来我们看到那个维度的时候呢,应该按照这个省份ID和省份名称这两个字段进行分组,但实际上呢,呃,由于这个分省份的ID它是一个微表当中主件有不键对吧?那么我们完全可以先分组聚合,然后再去关联为表,因为这样的话数据量就会减少对吧?好,那聚合好以后呢,在这边关联这个省份为表。补充省份名称字段对吧,好,那。这个都搞定了,那就将数据写出到。
08:03
C对吧,写入到C啊,那最后呢。启动任务对吧?啊启动任务OK吧?好,那这个呢,我们来写一下第一个执行环境,那这个我正常拿还是没问题的哈。因为驱虫那块呢,我们就不复用了,但是这个东西呢,就没必要再去写了,对吧,包括这个下面啊,或者说呢,到这步吧,我直接把这个拿到这儿啊。转化为按照这个分组对吧,嗯,我们到这一步啊,都拿过来吧。到分组。驱虫啊,这个呢,那那都可以拿对吧,分组按照嗯,然后呢去重。好,那这个倒没什么好说的,对吧,诶第一步这个东西怎么怎么没了第一个。注释,我刚才直接干掉了对吧,第一个获取执行环境啊。
09:01
但是驱虫方案呢,我们说了,我们再换一个对吧?啊,一样用两次嘛,相当于啊做个回顾啊,这个呢,我们用取最后一条的方式。啊,这个呢,我们取最后一条,但实际上我们知道对于这个需求而言呢,我们取第一条也可以,对吧,取最后一条。取最后一条啊,嗯,那当然要考虑到断续,所以呢,我们不能直接说后来的直接覆盖,所以我们加一个时间对吧?啊,生成数据的最后一条啊。好,那这里边呢,我们来写啊,首先这个地方我们改一下吧。呃,咱们那叫DWS。Trade,然后呢,Province order window对吧?诶,咱们到这个啊,好,那还是消费这个all detail这个数据没有问题啊,那转化为结算对象也没有问题,然后接下来呢,我们去,呃,驱虫。
10:04
啊,那去找这个呢,我们用状态编程加定时器的方式来做这个事情,OK了,好,那我们点。嗯,那这里边儿呢,我们既然要做到一个驱虫。对吧,啊,做到一个去虫好,那我们就先做一个。Filter吧,啊,先做一个filter好吧,呃,返回true跟false这条数据要不要?当然了,其实驱虫这个操作呢,你跟它合在一起也可以。对吧,啊,直接输出我们的那个数据也可以啊好,那我们就不这样做了吧,我们就直接还是分开先filter,那这里面呢,要用状态编程,所以呢reach。呃,不对。这个地方呢,除了要过滤还得用什么,还有这个要用到电视器,我们不是用简单的那个状态变条了,不是取第一条了,对吧,我们得有一个监视器,所以呢,我们还是只能用这个process。呃,因为我们说了要换一种方案嘛,以前的话我们用这个rich就行了,按照我们。
11:03
第八第九个需求是不是直接用这个菲就够了,对吧,Reach菲啊,那这边呢,我们要说了用定时器嘛,所以还是改成process啊好,那反问结果呢还是。他自己本身啊,那没有跟下面合并啊。好,那么在这个地方呢,咱们要去。Private value states。这里面放的数据,那当然是杰森object它本身对吧?好在open方法里边做它的一个。初始化啊,初始化那就value state,诶啊运行时上下文点get state,有一个value state,哎这个呢,我们就叫value。State。对吧,好,那这边呢,是杰森object。
12:00
点。对吧,好,那这里边放的是阶算数据,因为其实是放的他自己啊,那接下来怎么写,逻辑是什么?首先如果状态为那。那我们怎么办?我们就把当前数据保存进去。对吧,并注册定时器,如果状态不等于那。那我们要比较当前数据跟。状态里边数据的时间看谁更大,我们把大的放进去,如果说它相等,那我后到的先放进去,对吧,那是这样的,应该不会相等啊,这个情况对吧。好,那在这里面呢,那按照刚才我们所说的,先要取出状态中的。数据对吧,好点。Value啊,那这个呢是last value是我们上一次的值对吧,上一次放进去的一个值啊啊,那这边呢,判断是否应当判断状态数据是否为那值,那if这个last value它等等于那。
13:16
啊。啊,等于呢跟不等于呢,我们应该怎么做。对吧,好,那如果说呢,你是等等于那的,那说明呢,你没有来嘛,没有来呢,那咱咱当然要把这个当前的数据。更新到状态里边value,点他把这个呢数据更新进去,并且注册一个。定时器对吧,我们注册一个定时器好,那这边呢叫ctx。Time点啊,那我们再来取这个时间啊。
14:00
呃,耐用处理时间啊,正常的呢,去加一个。五秒啊啊,加一个五秒去注册这个电视器,哎,当你文档的时候,注册个电器,五秒之后呢,肯定要输出啊,啊那五秒之内有其他数据来了,可能就替换了,如果没有数据来,那就第一条会被输出,对吧?啊输出完之后呢,你记得要清一下这个。状态就好了,呃,那这边呢,我们主导定时器,如果它不等于那呢,我们说了,我们要比较两个时间的大小,对吧?好,那就取出。这个状态数据以及。当前数据中的时间。是的。对吧,好,那就是last value。点。呃,咱们呢,用的是。String对吧,咱们这个字段叫什么名字啊,来到我们的all detail这边来看一下,叫肉operator对吧,叫他,嗯。
15:07
好,往那一放。啊,这个呢是last。好,那接下来呢,是value点。湿润。CRV得到一个current ts。对吧,然后呢,我们要比较它们俩的一个。大小,比较它们俩这个大小,呃,那这个大家还记得,就是比如说啊,我们这样。If。嗯,比较,那我们之前写过一个比较的一个工具类叫time STEM,对吧。嗯,咱们那个工具类叫我们来看一下啊。是要他们在不出不来呢。没找到。啊,这个S是小写的,之前写的小写的对吧?我就说之前写的这个工具里,他们step怎么就出不来对吧?啊,这个S刚才写上大写,它提示的大写小写的对吧?啊点这个compare,然后呢,我们把这个放在前面,然后呢,呃,把这个car ts放在后面啊对吧?那如果说前面大后面小,它是。
16:22
什么情况?如果是前面的大,后面的小,那这个返回值是多少?是一啊对,这还有同学七的啊,还有同学记得啊,那当然相等,那肯定是零对吧?啊,肯定是零啊,所以呢,咱们可以怎么写啊,这玩意呢。等等于一对吧,如果它。呃,我看啊。这是等等于一,那我们要它怎么样?不等于对吧,我们要不等于一,因为如果你前面的那这个呢,其实你要注意一下,你看啊,因为我们当时还记得我们当时说的什么吗?就是你看啊,如果后来的。
17:09
比你大。或者你俩相等,那我都要。替换那个数据。对吧,所以呢,当这个大或者跟零分支呢,我们应该放到。一起对吧。啊,咱们应该放到一起没毛病吧,啊,应该要放到这个一起啊,因为我们要覆盖嘛,他是要做事的,那如果它大呢。如果是前面的这个大呢。对吧,那如果前面大呢,我们就不需要做任何梳理,对吧,所以呢,我们就对它。呃,取反这不就好了对吧,取反如果不等于一对吧,这边哎,那如果呢,哎,这个敲感叹号啊。如果不等于一。对吧,哎,如果不等于,那就是负一或者零嘛,负一或者零,那就说明是你俩相等,或者说呢,后来的更大,那这个时候呢,我们要更新这个什么值对吧,那个value.update把这个value呢更新进去就好了。
18:15
对吧,否则的话,我们都要把这个更新进去啊,那还有一种情况呢,就是如果你要等于一啊,你要比较结果是一,那就说明它大,它大呢,就说明我状态里面已经比你后来数据大了,乱续了,对吧,那我就不用替换啊,不用替换这没毛病吧,对吧?好,那接下来呢。诶,这个地方怎么变这样,我怎么用的是这个process。都是要K。用这个key process方式对吧,好,那这边呢,我们就把它拿过来啊。往这一放啊,然后这个就。不要了。嗯。
19:00
这个怎么那么奇怪啊。Process。Value。呃,看一下啊。这地方好像有点问题。等会儿等会儿,怎么这么奇怪呀?我把这个整个拿过来看X啊。他好像有问题。嗯,不对不对。的方式啊,少写一个什么。少写一个K啊,写一个K。所以导致有这个问题对吧,那把这个往这一放对吧,往这一放啊嗯,然后这个地方是object,这个不对啊。咱们看一下这个东西是。CX,哦,知道了。往这一放,这边呢是杰森。Object对吧,上。
20:03
嗯,这样吧,咱们再处理一下啊,他这个好像显示就是显示有点小小问题啊,咱们把这个处理一下。把这个,这是刚才我们写好的东西啊,我们拿过来。在这边CRX啊,拿过来它这个方法呢,好像不太对啊,我们让它自动生成,然后再回车实现这个方法。往这里面一放对吧,这个就好了。呃,CTRX哎,给它放下面,因为刚才呢,我写的不是这个K的process function,才发现对吧,我刚才写的是这个process function啊,所以呢,它里边刚才我们直接改的时候呢,它里边这个类型不太对啊,Object对吧?好,那这个呢,咱们就搞定了啊,咱们至少这个去重这一步搞定了,但是呢,还差最后临门一脚,这边呢应该有一个昂。Camel。当定时器响了,我们要输出数据并清空状态,对吧?输出数据并清空状态啊,输出那个意思就是out.connect。
21:03
呃,那数据呢,是我们这个value state点。Value对吧?啊,同时呢,清空状态value state.clear啊,但是这两个你不能写反了啊,你写反了,你输出的这个当值了对吧?啊,你得先输出再清空啊,你不能说一上来先给它清空了再输出,那不行,那肯定不行对吧?好,那这一步呢,我们就去虫的目的就达到了,看加。V啊,那我们要去除felt。对吧,诶把有的数据呢,就给干掉了啊好,那接下来我们要做将美化数据转化为这个超病啊,那就是felt。点啊,那我们想着,既然你要转成这个Java并嘛,每条数据你已经去重好了,你转成Java病,那我们当然直接用一个map是不就好了,那这里边呢,是一行数据啊呃,然后呢。咱们要return new一个。
22:00
谁呀,咱们的招聘,哎,我们新写的对吧,叫trade。Province on the window对吧?呃,第一个位置呢,是空着,嗯,第二个位置。空着啊,呃,那么第三个是什么。叫province ID province ID咱们是有的,对吧,那从这个。一行数据点。Get a stream。Province ID来这样答一下啊,它就叫谁啊,就叫这个province ID啊,这个还是一样的,得依赖于前面我们去拿啊,嗯,那province name没有空着,对吧,你写个now也可以all the count怎么办?Outcome,那给一个0L版对吧,这无所谓,因为最后呢,肯定要改这个值啊呃,然后接下来是我们的。这个东西对吧,那这个东西的话呢,我们应该有一个哈希。Said。String。啊,Hi string对吧,好看,加V得到一个凹的ID。
23:01
Set,你看跟前面所所做的操作完全一样,对吧?All I set.add at一个值就是当前这一行数据点get stream啊,那我们要取这个all的ID,我记得它就叫all ID啊。对吧,就叫奥黛丽。好,那这个属性呢,往那一放对吧,属性不多啊,那咱们可以去创建一下对吧,呃,All the amount。订单金额对吧,那我们要用的注意啊,应该是split头帽还是它啊Li啊好,那这边呢。这么写就是赖。Get get。Double。叫Li total amount对吧,好,继续。最后一个T。啊,最后一个TS,那这里面时间呢,肯定还是创建时间,所以呢,我们还是date。For ma.to ts,然后呢?这行数据里边去get,这个呢叫at time。
24:02
对吧,叫创建时间啊,那创建时间呢,是年月日十分秒,所以呢,我们给它加一个。啊,加一个注,这样的话呢,我们就将数据转化为我们的账号并了啊呃,因为这里边儿其实它默认值并不多啊,所以我们写一下啊,当然如果你嫌麻烦,这边呢,我给你加了build了。我给你加了标了对吧,你也可以怎么写啊,这个地方直接诶点build。最后点build补充信息,Promise ID spli total mount加all ID加这个create time对吧,其实也就这个,那我们多几个态呢,1234也还好对吧,也还好啊,所以呢,我们就呃。这样一下也还好,但是你要是上一个需求,你那个就很多了,字段特别特别多,对吧,就用起来呢,很不爽啊CR out加V啊,得到一个叫province order。Yes。对吧,转换为找呃,接下来呢,提取时间戳点a sign and对吧。
25:05
还是一样的啊,这个呢,写的次数也不少了,说实话两秒的延迟对吧,这边呢是province window对吧,然后呢,继续点。With time step aign这个时间状的提起序啊,Ization一个time step,嗯,那这里面的点get。S,对吧?获取到我们的一个好,得到一个trade province with worldmark的一个S。接下来我们同时把这个分组开窗聚合给它搞定,对吧,好那点。那咱们呢,按照这个省份ID分组就好了,对吧,那就是trade。啊嗯,什么ID get province ID作为我们的分组条件,对吧,那继续开窗window,他们window点啊然后呢,给一个。
26:06
十秒对吧,看点给一个十秒好,那窗口开好了,最后呢,聚合reduce又有一个reduce function啊,同时呢,再来一个window function,你看这些东西是不是完全是前面所写过的一些内容啊,对吧,就是回顾啊,完全就是对前面知识点的一个复习,一个回顾啊大家呢,下去也要这样去敲一敲啊啊那这边呢,还是Y61啊Y61。呃,那么这边呢。咱们还有两个值要放,一个是all the mount对吧,还有一个呢,是这个all the set,那value第一点。get.o对吧,然后呢,VALUE2的。Get out set啊,那同理还有一个value it.set out amount。然后就value一点,奥特曼拼接上二的。
27:04
Cat。Get OK,好,那这样的话我们就搞定了,接下来这边。我们要做的事情啊,跟商务完全一样啊,那首先呢,从我们这个数据当中得到。我们的。结果及province or window。那么接下来呢,给他。补充信息对吧,Or点。Minutes这第一个,第二个province。Set,我们更重要的all count对吧,那这个呢,从我们这个Java定里边去取啊。呃,get.size啊,当然了,给它做一个转换,那同理还有两个时间啊,两个时间开窗的开始跟结束时间啊,Set。
28:01
这个STT对吧,ST啊,然后呢,这边是date for店。window.get start,最后还有一个啊点叫ET啊,那date for my YouTube点。这个window点开end,最后呢,把这个数据正常的输出,对吧,然后呢是province。呃,那么这样的话呢,我们就得到了一个reduce d。得到了一个聚合之后的一个结果集,对吧?好,那把这个呢,我们可以。接下来呢,要补充这个信息啊,那我们已经写好工具类eboo对吧?好,那aync data stream.on AED,那理由呢,是reduce DS,那接下来呢,是我们的。异步函数对吧,有一个叫d ma的一个方式,好,这个呢叫trade province the window,你看我们当时写T的作用就体现了,我如果说我们只有第一个需求,大家可能还感受感受不到,对吧,那加上这个需求。
29:09
是不是感受到我们写气的好处了呀?对吧,如果不是写的T,那你那个地方写死了,你这是不是得重新写这个工具类了,就很麻烦对吧?哎,实现两个啊,先把后面东西写上啊100。这个是点second啊,那当然了,咱们第一在这个位置呢,要加一个我们的表明啊,来拿一下我们省份啊叫base province这张表,嗯,那么这个啊叫province OK,把它拿过来,来,注意大写。接下来呢,我们要的是input点。Get。Province ID对吧?呃,那么继续在这里面要补充信息点。Set,诶,就一个province them吧,对吧,从这个d for当中,Get STEM provin them,大家看一下在这张表里边叫什么,叫什么?诶,这是province这张表,在这个表里边呢,就叫一个。
30:07
Name啊,没有其他的一个名字对吧,诶就叫这个。Name啊,就叫这个name,那这个就搞定了对吧?好,那这样的话呢,我们就out加。V啊,得到一个。With province。对吧,因为我们要补充的,你在这个招聘里面,你看一下,你要补充的也就一个province的一个。名称对吧,就是这个名称啊,没有什么其他的。对吧,我们要补的就是他啊,好,那就搞定了啊,关联为表就做这个事儿,对吧,那这个需求呢,其实比上个需求要简单一点,因为它只有一张为表,再加上呢,我们已经。做完了对吧,前面都搞定了啊那点。好,那怎么样?
31:00
当然了,在这个之前,咱们也可以对它做一个打印啊,这样的话我们等会看这个关联数据有没有丢,对吧。Reduce以及nce,好,那来呢,Pronce点吧,叫my house inser into啊,表明先不写斯。数一下有几个字段啊,那我们数这个接表语句也可以对吧,直接数接表语句啊,两个窗口两个这个是四个,四个两个度量六个加一个时间戳对吧,七个好,那在这边。123456。补气对七个,然后呢,表明再拿过来吧。上午呢,我们就是先没有见表,所以当时说后面就补,但是忘补了对吧,所以第一次测试呢,出了一点问题啊,就表明没写,因为点。
32:04
好,那接下来呢,我们把这个。拿过来。往内放,哎,这就是关联为表,那同时呢,将数据写到click house OK吧。好,那这里边呢,咱们要去做一个测试啊,那首先第一步还是把这个东西去准备一下啊,这个都还好啊,对吧?呃,因为我们已经有了这个叫诶他。Use PU对吧,所以呢。我都不从那个什么all的detail去拿了,我直接拿它就完了。那它更方便对吧?啊,因为呢,我可能只需要改一个地方就把它改掉。这俩需求你想想看,是不是就是这个地方差别啊,就他这个差别,其他都一样啊,还有我再告诉你,在集群当中呢,我所有的环境都没有关。都是开的,就是ZKRA对吧,ID FS base,卡夫卡,呃,Mal这些东西呢,全都是开的,全是开的,所以呢,咱们接下来测试要开始就行了,从这个啊,呃d ABB啊,那这个其实没用,我告诉你。
33:07
没有用,因为呢,它我们不产生这个维表数据的,你看这都打印的是什么。事实表啊,全是事实表对吧,事实表呢,咱们就是不要了,Cut info all the detail allf,看见没。对吧,上面这个还是最早的,我们做那个同步数据。这个L咱们做同步数据的那个时候产生的啊,当然有一些用户会发生这个改变,对吧?啊,那安全起见呢,把它打开啊,这个都还好对吧。第二个。预处理表。其实用户变了,跟我们那个数据也没关系啊,所以呢,跟他嗯也不用开,说实话啊,呃,A提交的,但是呢,既然是一个维度,那我们都开着吧啊然后呢,如果说你的机器性能不好,你可以不开,这个就DM可以不开,因为它不受影响啊好,那这个all detail必然要开。
34:05
好,那最后一个你不能看它了,它是一个那个PU,那我们得。这个trademark,这province对吧。好,那这个呢,已经。开起来了,那接下来呢,我们去造数据啊,去看一眼对吧,首先在这边,当然我们找了杠。加交数据啊呃,那这个里边打印呢,咱们只是在这个聚合后才打印啊。这是开窗聚合呀,所以呢,你第一次造数据应该不会有结果,对吧?因为我们前面没有做打印了啊,前面没有做打印了,我第一次打印呢,都是在开窗聚合以后,第二次打印呢,是关联微表以后,对吧?我们打印了两个地方啊,所以呢,第一次它没有数据才是正常的啊,没有数据才是正常的,但是呢,你也不能说明这就对了,因为有可能你第二次也没有数据,对吧?所以呢,我们得间隔十秒再找一次。
35:25
好,那我们接下来看这边有没有数据啊。哎,这个数据就来了,对吧?啊,那这是我们看到这是with province DS啊两边都有对吧?那首先呢,这上面这个数据,上面这个数据呢,它里边pro name是一个什么,是一个空值,看见没是空,因为我们呢,给的就是空嘛,对吧?嗯,那这个我看一下多少条啊C f34条,诶不多对吧,这个好像不多啊,因为聚合以后嘛,数据变少了啊那么接下来呢,我们看一下这个with promise。34个,34个。啊,那一个窗口嘛,刚好34个,因为当时我们的审判维度里边就是34条数据,对吧,那你一个窗口只打印了一个窗口34条合理啊,每个。
36:10
这个省份都被造到了,对吧,我们所有的这个提供了这个维维度信息的,哎,省份呢,都造造出去,那各位发现我们看一下这个啊,这里边provi STEM是一个值。啊,没过,呃,不对,有个地方啊,这没大写,看见没。对吧,虽然我们数据没少,但是这个地方是一个什么。是一个浪值,看见没,因为我这是不是漏了大写了呀,对吧,那不行,那我们重新得测一下啊。那这个省份它不可用,它是个值对吧。嗯,我们重新呢去。打开运行啊,那这是我们之前漏了一个点啊,这个是忘了改成大写了,对吧,所以你拿小写就获取数据,它获取不到,获取不到他们就可是一个捺值嘛,对吧,它就设置变成一个浪值啊好,那咱们再重新造一下啊。
37:09
这是属于我们第三次造数据了,对吧。好做完了,呃,那我们看一下。接下来呢,我们在。等一会儿。啊,再造一次数据对吧,得等个十秒钟啊,得等个十秒钟好,现在呢,应该没有问题,然后呢,再等个十秒钟,我们再造一次啊。诶,这边来等着。好,那这个时候有了,首先呢,你看一下这个数据啊,诶,那这个是不是有有了呀,对吧,首先这个字段补充上了啊呃,那我们看看数据有没有少啊,应该还是这个。啊,这33啊,33有一个数据可能没找到对吧。
38:01
好,来看33条对吧。33条对吧,两边都是三条关联前关联后都是33条,那没有问题对吧,而且呢,这次我们看确实怎么样。省份的信息,哎,就都有了,一眼看过去全有了,对吧?啊。好,那这边呢,咱们就搞定了啊,所以刚才这个妹妹小姐啊,感觉冥冥之中自有天意,因,因为你看这个时间。是不是有天意,大家觉得对吧,就是想让我们这个时间呢,刚刚好啊。
我来说两句