00:00
呃,接下来提取事件时间生成wordmark啊,这一步呢,我们先写一下,因为后面又要做key对吧,所以呢,我们在这中间把这个wordmark先提取一下S。嗯,我们还是两秒的延迟啊。好,那我们去找一下我们的数据啊,里边它的一个时间是哪个字段对吧?这里边呢,其实我们保留了一个谁呢叫create time,用的就是它这个创建时间对吧,这个呢,还是不用它啊,这个时间是我们自己给的,相当于系统时间对吧,以当前时间嘛,对吧,那我们还是用这个,这个才真真真正我们数据产生的这个时间对吧,才让我们数据产生的时间啊好,那么接下来我们就可以写了。因为我们知道用谁了。
01:00
对吧,知道就谁了?呃,那莫不如直接一步到位吧,我也不搞那些东西了啊,就直接date for.to ts对吧?好,Create time呢,它也是年月日加十分秒啊,所以第二个位置呢,是一个true,没毛病啊,那第一个位置呢,就是element.get string对吧?嗯,取谁呢?就刚才我们这个create time啊,刚才没复制,我把它拿过来。这样的话呢,我们就得到了这个数据对吧?好,那这个是杰森。How g with。What?对吧,这是提取这个wordma,接下来呢,呃,按照user ID分组啊,这一步呢也很简单,这样key啊,里边呢,还是这个接算格式啊,呃,Uz ID我们看一下uz ID在里边叫什么?哎,就叫uz ID对吧?好拿过来啊,所以呢,你在写DWS,你得看DWD它这个表字段对吧?所以你把这个类打开啊,这个就不会写错啊,老师拿过来对吧?这样的话就是jason.get stream,诶叫user ID ctrl加咱们就得到了一个K。
02:08
UID。对吧,咱们按UID分组,接下来呢,提取独立下单用户。啊,提取独立下单用户好,那这里边儿呢,还是以上的跟之前一样的写法对。Flat。啊,一方面呢,要。取到一个。过滤啊,另一方面呢,诶,咱们这里边好像不需要过滤是吧,因为我们零零。好像都需要。是不是零零好像都需要吧,呃,零零都需要的话,那我们就换一种啊,就是能用多种写法的,我们就多一种啊,就喜欢改变,但是你工作的时候你不用这么。花里胡哨的对吧,你最熟悉哪一种就用哪一种,既然我们零零,假如说两零零指的什么,零零指的是两个用户啊,当天的和总的用户数,对吧,这两个呢。
03:06
就算你为零,零。我都需要。啊,我都需要,那也就是说它不涉及到这个数据的过滤了。对吧,好,那为什么他需要呢。因为在于我们除了用户数以外。我们还有什么?订单金额这个东西它不不等于零对吧,所以呢,我们所有的数据都要,每一行都要,那我们就可以用什么用map啊,有一个reach,当然用状态编程了,Reach map对吧?这个呢,呃,Trade all the b。返回的就是它叫trade对吧,这里面呢,首先有一个状态private啊,然后value states spring啊,存的是最后一次下订单的日期对吧,叫last。DT。
04:00
State。呃,那这个呢,我们直接get run time,由于呢,咱们是不光要算算每天的,还算一个总的,所以这个状态呢,这个状态到你不能清对吧,那不能清的话,我们也不用写那个什么。TL啊,你有一个value state啊,这里面呢是last order。接下来呢,点class。对吧,啊,所以你要先想清楚这个状态能不能清啊,他呢不能清,因为我们要算一个总的对吧。好,那状态已经搞定了,那接下来呢,这边我们先返回档吧,对吧,最后呢,肯定六一个那个对象啊,首先第一步获取状态当中的日期,以及当前数据的日期对吧,获取状态中以及当前。数据的日期啊,状态日期呢,好获取。
05:02
Value加DT。好,那当前数据的日期呢?value.get string啊呃,谁呢,Create它啊。然后呢,按照空格分割取第零位。韩家得到一个current。Date。地铁。对吧,这两个时间有了,那我们定义。定义。啊呃,当天。下单。人数。以及新增下单人数对吧,这两个值呢,我还是从这拿一下吧呢,我取的名字过于简单啊,一个是下单独立用户数。一个他啊,我把这两个先拿过来啊,还有一个下单新用户,新下单用户数对吧,新的下单用户啊好,那这个呢,我们用这个就行了。
06:04
然后呢,我给一个默认值为0L。啊,都给一个默认值为等他。对吧,好,那接下来呢,判断状态是否为钠第一步啊判断。状态是否为值?If。Last all dt等等于闹,那如果它等于闹了,那怎么办?那必然。这两个值要怎么样改为?一他俩呢都改为一啊,因为你状态没呢,没来过对吧?好,那这边呢,L。If,你不等于,那但是呢,你呢,跟我当前的日期也怎么样,也不等啊也不等那怎么办呢。那我当天的改为一这个。
07:01
动。对吧,这个不动新用户呢,那不对,因为你状态不等于那了,你不可能是吸取新的啊,但是这里这里面呢,还有状态要做一次什么。更新对吧,跟我们上午所写的是一样的,其实。你看他直接给我们怎么样?呃,波浪线出来了,他说这个东西啊,找到完全相同的了,其实就跟谁相同啊,跟我们上午写的这块啊。对吧,我们上午写过就这样,你看这块也有波浪线了啊,因为他检测到呃,重复代码了,对吧,但是这点东西呢,我们说给他写出去,其实也也没必要,说实话对吧,也就不写出去了,也没有多少嘛,对吧,好,那接下来呢,我们最后要返回数据,返回数据呢。其他字段都好说,就有一个。这个字段。这个磁带呢,咱们最好是用这个。数据。处理一下对吧,用。这个地方。
08:00
S跟给大家怎么样。加工一下。啊,把它俩相乘一下对吧,这我们之前一直做没做的事情啊,行,那这个东西呢,我们就。可以来做这个事儿,他俩呢直接取就行了,对吧,等会我们来取啊,我们先呢取出。取出这个下单件数以及。单价。对吧,好,那这个是Y6点。呃,Get stream啊,不能get了对吧,嗯。首先呢。这个键鼠咱们用这个in可以吧,键鼠叫SK number啊。好,得到一个。然后还有一个是value.get。Double啊,那为什么double呢?因为我们招聘里边写的是double,其实这种金额最好用big。
09:02
对吧,啊,就精度更高一点啊,但是不涉及除法其实还好,因为不涉及到除法,要如果除法的话,你用double就不太合适了,说实话你要不涉及除法其实还行啊,其实还行,对吧?呃,那这边呢,我们get double double里边呢,获取的是all the price。得到一个all price对吧,这两个东西有了,我们原始金额就有了啊,我们就可以来写这个了啊呃,返回另一个是什么呢?叫trade。凹的B对吧,首先。窗口信息没空啊呃,接下来呢,是当天的。用户数叫all the unique use,还有一个呢,叫all new use,接下来是double类型的all activity,对吧?啊,那就是value.get double。啊呃,这个值呢,等会我们去填啊,value.get double对吧,这个啊嗯,那。
10:06
这个值呢?两个相同的原始金额吧,啊,就是应该你应该付多少SK number乘以这个price。好,最后还差一个。还差一个谁啊,还差一个TS对吧,TS呢?呃,咱们给他一个。纳值啊,给他一个纳值就好了,对吧,那这两个值呢,我们把它放进来啊在这。Activity。还有一个是couple。获取的就是它对吧,这样的话呢,我们就搞定了,因为这边就没有过滤了啊说if这两个都等于零,我就不要,哎,但至少有一个为一我们才要,就没有这个了,因为就算你拥护。已经来过了,但是你这个用户下的订单,那你的金额还是实打实的在的,对吧,所以金额我还得要啊好,那这样的话呢,康家费得到一个叫trade。
11:04
Out。对吧,这是主要是为了提取独立的下单用户啊,因为你要提取金额的话,你大可不必用什么状态编程,跟他没什么关系,对吧。好,那么接下来呢,我们要做开窗。聚合啊,开窗聚合对吧,呃,刚才呢,我们是trade凹的点点。还是温度啊,还是温度二。Time。点second,然后呢,是这个十秒对吧?啊,因为前面我们用到了time在那个TTL那边啊,不是TT是那个。对,最早的这个TTL第一个对吧,啊TD这用到了time,所以第二个time呢,它就呃写的是全面名,这个我们之前也见识过了,对吧,点reduce。好大写开了六六方式。
12:08
好呃,接下来呢,这边我返回的就是Y61啊,这里面字段我不写,我不想写了,因因为五个Y一个要对这不写了,总可以吧,不写了。没有什么意义了,这个东西对吧,我直接从这去拿一个,哎,这里边我用的是I get对吧,拿拿一来写,我不想用I get。They said。嗯,从这个写吧,还是写一下。呃。加。Y62点。Get。诶,这是第一个当天的独立访客对吧,然后呢,总的。总的new use count啊,然后1.get。加。
13:01
Get。新的啊,一个总的一个新的,这是总的对吧,上面呢是当天的,这个呢是新的啊啊,那就还有三个金额呗,点三。啊,先搞这个原始金额啊,来了一点。Get原始总金额加VALUE2点。原始总经。然后是活动啊。活动的总金额啊,减免的金额点。Get活动加VALUE2点。活动的金额对吧?呃,那第三个金额那就是卡购物券啊。Reduce amount点。
14:03
加VALUE2点。Cat。Cup。对吧,好,那这样的话,五个指标就搞定了啊,五个指标就搞定,接下来呢,我们就补充这个信息啊,这个呢就。好些了,哎呀,已经。已经写到吐了,说实话。啊,点e dt啊。温店还有一个。Data。For酒店。温店。好,最后。
15:02
啊,这个就。搞定了OK吧啊。好,这个呢,就已经。很无聊了,已经到现在为止啊,刚开始第一次呢,还挺有劲啊,现在呢,越来越无聊,我告诉你啊,好,那我直接把这个一定做了吧点。接下来点I think麦可号点。Ins。来流失八个子弹。当然我们说的是是。四个。八个吧,因为我们有两个窗口,一个时间是三个,然后呢,五个度量嘛,对吧,度量里边有两个用户数,三个金额啊,就是八个啊好,那接下来呢,把这个。
16:05
名称啊,表面拿过来,然后呢一个Q的。好,然后呢,把这个拿过来啊。往这放。这个呢,咱们就。搞定了,最后呢就是开窗聚合,并将数据写到克里对吧。嗯,那咱们来做一个测试啊,测试的话呢,还是一样的,我们先把这个数据流得整理一下,它呢消费的是all detail数据,也就是这一个主题,而且也就这一个主题,对吧,所以呢,咱们把all detail这个呢。拿过来。对吧,再往后加一些东西就好了,好,那加什么呢,在这儿啊。首先它有一个link APP对吧?呃,然后呢,我就写了。
17:05
这个呢是我们的DWS,好,那把整个的这个拿过来。往里放对吧,这个呢依赖于CK啊,从进程的角度来说,具体的进程是它。对吧对吧,好,那这个呢,咱们就搞定了,包括这些消费者组我也改了啊,那就没有问题了,集群当中西麦克LZK,卡夫卡对吧,加house已经是开的啊,这边呢,我就没关过啊,还在这。是吧?这边ma ZK,卡夫卡诶都是齐的啊,包括click house也是开的,这边都用了,刚才还建表的呢,对吧,那么接下来呢,我们就是开这个首先free。对吧,预处理的,然后detail,然后就他自己啊好,那我们先找到这个。叫。嗯,这个是all detail这个得保留对吧,等会呢还得开它啊好,第二个呢就是它啊,上午呢,我们测的也用到这两张。
18:07
这两个任务了,对吧。好,那这个没有问题,然后接下来呢,开他自己。好,目前来看呢,好像代码逻辑上应该没有问题对吧?呃,只是具体数据来了啊,他有没有可能有问题了,这个不好说对吧,当然得测啊,但是这两个肯定不会有问题了,因为我们上午都已经虽然改过代码对吧,今天改过代码,但是呢,已经测过了啊,那就他他的话呢,我们就造数据呗,不造数据你也不知道对吧。好,这个时候造的是5月25号的。数据了啊,因为我们上午已经改过了,但这个无所谓了。啊,这边呢,我们也写一个查询啊的啊,这个八个字段,八个字段好像也行吧,但是这个字段名过长,他等会儿可能不太好看啊。
19:04
好,那这边呢,已经做完了,做完之后呢,我们到这边哎,还真有问题啊空指针啊行,那我们来看一下啊,哪一块空指针了。嗯。点开174号。啊对,这个还要麻烦啊,那这什么呀方,因为我们两个值累加两个long值累加不了这个啊忽略了这个点对吧,刚才我们用的是all the detail里边的一个东西,All the detail呢,你看没有值呢,它是不是none了。看见没?它没有值,是不是个long值啊。对吧,那你要是个nu值的话,你最后到这边你就none加none,哎,控制针了。对吧,那不行啊,你给他复制一个long值,那那那不行,那不行,那这边呢,咱们再稍微改一下啊,这个问题还好,就在这个位置吧,对吧,Get double呃,我看啊。
20:08
嗯,或者说咱们直接这样啊。诶,这个啊,把这个字段得留着,然后呢,这边咱们这么写。呃,Default value啊,它这个还不行,还不能让咱们这样写,因为它这个返回值是一个是一个那什么。是一个string型对吧?啊不对不对,是一个object类型啊,所以呢,咱们这个地方这样写一下呗,你写一个算算符也行,或者说你这样写也型啊,呃,这边呢啊加飞。得到一个值。对吧,好,那if这个东西呢。它如果等等于钠,你把这玩意儿呢,重新赋个值。
21:02
对吧,哎,它是。没有的啊,它没有的,然后接下来呢,这个东西你放在这儿。啊,同理它也一样。OK吧,它也一样啊。看下呗,得到一个,因为刚才没考虑到它这个值啊力。If,它如果这个Li carbon,它等等于那的话,那它呢,也把它改为什么。好,把它放过来。好放过来,刚才没注意到这个点啊,因为刚才我们看这张表,Order in for order in for,这张表里边呢,其实我们写的是谁啊,我们写的是0.0,看见没。啊,就是这张表里边就是如果没有值的话,写的是0.00啊,这张表呢,写的是浪纸,写的浪纸,如果说这张表写的是0.00,就不会出现刚才那个问题了,对吧?好,这是一个小问题啊,还行对吧?啊,那我们重新呢把它运营起来啊,再找个数据来看一下啊。
22:11
嗯。嗯,把它起起来。起起来以后呢,在这边咱们造数据再来看一眼啊,遇到问题咱们就解决问题啊。好等这边做完啊,做完之后呢,我们来看。哎,目前来说呢,他这个数据过来了,应该就没有报错了啊,他没有打印结果呢,是因为咱们有这个。十秒的窗口对吧?啊,咱们有这个十秒的窗口,OK吧,好,那咱们过十秒呢,再造一次就好了呗,是不是对吧,咱们再来一次啊,现在呢,应该过十秒,咱们聊天之际肯定就过十秒了。等这个再造完。
23:02
然以后呢,我们到这样看,哎,这边就有具体的这个数据了,对吧,嗯,那124 124,他俩肯定现在都是一样的,还是一样的一个问题,对吧,只要你是同一天,那么他俩都一样。啊,他俩都一样对吧,只要你是同一天,他俩都一样啊。呃,All activity啊,你看这个就是double double就不太好,一加的话它就精度损失了,对吧,加减啊这样的方式,其实嗯用这个就是后面呢,我们会把这个招聘改一下,我到时候改一下,其实这个地方用big c会更好一点。啊,用big会更好一点,就不会有这种精度问题,对吧,这个看着挺奇怪的,其他的零倒无所谓。大家都是零无所谓对吧,啊,原始金额呢,反正乘起来。也没有什么小数位也不会有问题,对吧,主要就在于它确实有这个金额,但是呢,金额一累加,它有这个精度损失就会有问题,对吧,看着挺奇怪的啊好,那咱们呢,再造一次啊来。
24:06
接下来呢,我再改时间再造一次,改成这个5月26号再再造一次,对吧,给大家看一看,两个数据不一样,那这个跟上午讨论的还是一样的,只要你这个天不改,他俩呢都一样。就不用想他俩一定一样对吧,那这样我们呢,Application我改成5月26号,我呢再找一次对吧。当然这一次呢,它还会是一样的,因为他是5月25号最后一个窗口。对吧,啊,这一次啊,它还是一样的,一百零六一百零六没有问题吧。好,那我们再等个十秒钟再造一次,我们很有可能就会看到不一样,当然有可能啊,他俩还是一样的,也有可能对吧,刚好呢,你5月25号造到的这些用户呢。今天5月26号这个数据都没有遭到。
25:01
对吧,没有生成刚好两个两天数据没有重复。那也有可能它俩相等,但是这个概率就比较低了啊,你造的越多大概率呢就不等了,对吧,好再造一次啊,我们再看到这个不等的情况,那就算不等的话,那也是当天的肯定比你这个新增的。比较大对吧,因为只要你是属于新增的,那一定属于当天的,看135134125。没毛病吧,啊,那我们要达到这样的一个效果,那就那就没问题了啊好。这个呢,我们就。
我来说两句