00:00
下面我们开始写代码。在这个udf里面创建一个类。啊,创建一个类,创建一个类呢,呃,定义UDF,不知大家还记不记得哈,这个非常简单,你是定义一个类继成UDF,重写里面以value的方法啊就可以了,另一个类继承udf。Uf。OK。然后重写里面以value的方法public pub,呃,返回值呢,我们希望返回值的是这种啊,实际这个值因为你传进去P取出对应的值嘛,对吧。啊,Eva啊,Evaluate,那传进去的值有哪些呢?还记得吗?一个是lie,比如说这一行内容。对吧,啊这一行内容,然后还有一个值是什么呢?还有一个值是K呀,你说你想娶谁呀,啊想娶谁。好往这一放,你先随便返回一个啊,这边返回一个,这样就结束了,那传进这个line大家看一下啊,再看一下我们进去的是。
01:07
这些内容怎么办呢?Ctrl AC。F3啊,这个呢是我用了一个工具哈,行,那我传进去的是这这一行内容,然后呢,这个还有一个KK的话,我这里有几个值,一个呢是如果是服务器时间,我传进的就是it,如果想取出的是ET,那我传进去就是ET,那我想取出这里面具体的值,那我就传对应的这个对应的这个K值,比如说VC啊啊,比如说mid啊啊这样的一个情况啊啊那取出的值,取出的这个string的话,如果你传进去的是这个ST,取出的是它传进ET,那对应的这个一个是。那这里面是其他的一个时间类型。开始写。那这个赖这一行内容进来,首先进来得切割呀。对吧,哎,切割嗯,Line点斯布利特啊啊斯不利特斜杠斜杠竖线之前解释过对吧?啊,因为在正则表达式里面呢,这个斜杠呢,是用这个斜杠竖线啊表示的,那你要进行转移的话,需要在前面加一个斜杠,好那这样呢,获取的就是这个logs log吧,比如说这一行日志内容。
02:22
啊,切割出来,那切割出来的一个是服习时间,一个呢,是具体的后面这个节省,那首先要对它进行判断,合法性判断。啊后感性判断,那怎么判呢?啊,If log.length它的长度如果不等于二。那就说明有问题啊,因为我这里面用竖线这个分完之后,它的长度就应该是二啊,就应二是一也不行,多了也不行,哎,那这块呢,就是呃,如果不行的话怎么办呢?如果不是二直接return控制不上啊空,那这这一条日志就已经被舍弃了,那还有啊,除了不等于二之后,或者。
03:08
或者什么呢?或者如果你后面这个接身数据这里面也没有内容,你说是空的,那我也没有必要要了哈,那怎么判空呢?这里面用到了一个us的一个工具类啊,第2IS啊flag空,那谁被空呢?Log,哎,这里面我要取值哈,取log。一对吧,落个一。啊,点下。如果它为空的话。它为空,那我们直接后面也没有必要去再做了啊,直接把它抛弃掉就行了,那如果前面检查正确的话,那接下来我就要开始具体的解析了,那解析的话,我要取出对应的后面这个接身对象。啊,因为取这个对象,那这个对象呢,那就是一个。
04:01
G son。Object啊object,那这里面我用到的是这个org下面这个JA哈,记住哈,导包别导错了。org的这个JA森,呃,如果你处理不好的话,它会给你导那个谷歌那个勾啊活水这个ORGJA森,它属于哪一个包里面呢?它属于在这个泡包这个还LL里面,还LL里面它自带了一个接身那个解析的一个啊价包啊用它就行了,不需要额外导包,最少把它存进来,那我这里面传的是这个log啊log一点。它本身它就是一个阶层嘛。好,拿到了这个,这是杰森。就吧,一。小心点。OK,拿到它之后,下面的话,我们具体的就是取值了啊,根据传进来的K取值。
05:01
取值,那怎么取啊,判断呗,If if你传进来这个key是谁?比如说我们传进来的K是ST,就是serve time serve time的一个简写啊,就是serve time的一个简写。他点equals,如果equals p跟你传进来的P相等,那这块呢,就会返回服务器时间,那就return啊return return谁那服务器的时间,你这里面不是落吗。Log个几啊落个零对吧?哎,落个零那不就是服务器间吗?啊,去把它返回。捋一下这个逻辑,因为这里面切割完之后,一个呢就是服务器时间,另一个呢,就是具体的这个进身数据,那我直接把你返回不就完了吗?啊返回好,这是一个逻辑,那再来那E如果传进来的不是ET啊,不是itt,那如果传进来是谁呢?是et.e口,如果如果传进来的是这个ET这个里面,那我希望呢,就把这个里面的接身数组这个值直接给它取出来。
06:16
那怎么取这个接身数组呢?哎,那这个简单,哎,取出这个金身数组,那我这里面我定一个统一的返回值吧,定一个统一的返回值哈,Rep。我也统一按这个result返回啊,这样会好一点,那我这个result等于什么呢?我要返回的值。嗯,这里面返回的人要进行一个判断,先判断if,你这个杰森里面。点has。Has是谁呢?Has这个E,那为什么要做一步这个合法性判断呢?比如说首先你判断你这个阶森里面有没有这个ke。
07:00
这个就是因为跟我们那个之前照的数据有关系啊,之前照的一个数据啊,那个是随机生成的对吧?嗯,各种每一个事件,嗯,放了一个布尔类型啊,一共是十个事件,一个布尔类型,但是有一些极端情况,极端情况什么情况呢?这里面一个都没有。你说随机的时候恰巧了啊,比如说孤尔类型都是零。都是零,它没有,那你说ET里面是空的。空的那个ET这个值就没有,那没有的话,那那你后面后续再处理的话,容易出错,那这块呢,我们就先判断一下,有有的话我们再往后处理。啊,有的话再处理,没有的话就没有意义了啊没有意义了,行,那如果说这块有这个ET的话,那怎么办呢?哎。绕它等于,哎,等于这个杰森点get使劲啊,那使劲里面可以传入这个T。对吧,哎,现在呢,就相当于把这里面ET里面对应的值取出来啊,取出来不用的话一般都是get,如果用的话,你要get这个接成object啊对象啊好,那这是这块,那else再来。
08:09
如果else的话,如果既传进来的不是ST,也不是ET,那就相当于传进来的是common里面对应的这个P值。是这样吗?哎,Common传递的K值,那common传进的K值,那你直接解析,解析不了,你得先传进去这个CM,取出里面对应的接对象。那才能进一步的解析,那怎么取出CM呢?比如说获取CM对象,CM对应的外流子。啊,对应的,那怎么取,还是杰森点get杰森object传进去CM。嗯,把这个key传进去。那取出来的才是这个CM,你说现在你拿到了这个他他谁呢?它是这个对象。
09:03
啊,他这个对象,那有了这个对象,那剩下它就简单了,怎么简单的呢?啊,还是if,嗯,cm.has has是谁呢?Has你传进来的这个P值。哎,你传进来是谁,如果这里面有这个K值,有K值那就取吧,那就简单了,那就cm.get使Z啊取值的话就是使,然后进去。嗯。好,那取出来的对应的外流值。那这个Y6值我直接可以复制给。对吧,哎,直接复制给result,那这个result我可以放在哪呢?都可以放在最后统一返回,那统一返回我看看啊这一块。我稍微优化一下这个代码啊,优化一下这个代码。行吧,就放在这吧,嗯,Result,那这块呢,这块能不能呢。
10:04
这一块会好一些哈,写代码标准一点。行,那这样的话看起来会舒服一些啊,就说每一个分值里面都返回一个result对吧,那result作为最终的一个返回值,你说这块如果说传进来的是这个,呃,ST,那我把这负值复制给ST,复制给这个让,那如果传进来是ET,那这块呢,是传进ET的值,取出对应的值,那这块是CM。啊,下边对应的K,那你先取出CM,然后再往后的一个校验。行,那这块逻辑我们写完了啊,逻辑写完了啊,逻辑写完之后呢,那下面的话我们来判断一下啊,比如说校验一下这块写的是否正确,那怎么校验呢。啊,没函数,没函数之后呢,是这来测试嘛,我就假如传进来一个数据,那这个数据我从这里面取一条吧。
11:01
Select from e o eventlo limit limit啊,Limit。OK,把这个值过来。把这只拿过来之后呢,放在这里面。对吧,这就是传进来的任何一条数据,看的一条数据之后,写这里面逻辑,那怎么做呢?另一个另一个知己啊叫base啊F e.F也就说你一个知己啊,逆过它,拗过它之后呢,调点evaluate方法,然后传进去这个来,然后后面呢,这里面传进去你想要的这个K值,那K值的话,我们传进一个慢的吧。设备ID。设备D也行,LN也行啊,乘以N吧,小包返回值re UT,对吧?啊u rt,好,那把它打印一下,Result DR so,嗯,这样呢就打印出来了,试一下啊,测试相当于是又一个自己的对象,自己对象里面调的这个自己的方法,方法呢传进line line呢是这一行日志,然后呢,我要取出的是这个common下的这个LN。
12:20
啊,这条数据,然后返回执行。看能不能执行啊。看取出来了吧,这个是呃,负48.5对吧,哎,48.5就OK了,那你再换一个啊,除了它之外呢,我们传进ST呢,应该取出的是这个服务器时间对吧?啊服务器时间右键。对吧,服务器事件,那我在里面再传进去一个ET,传进去ET的话,他应该给我返回的是一个接身数组。再见。你看对应的接着数组吧,对吧,从这那个大括号开头啊,这个中括号开头,中括号结尾啊,这里面对应的值,这就很好用了啊,那这块呢,我们可以第八个走一把啊走一把啊让大家感受一下这里面代码一个逻辑是什么样的啊来啊,我一般习惯的就是这个debug。
13:18
找一下啊,进来之后呢,那是到了这行,你想进去看啊,点进去,点进去之后呢,你在这里面哪个端点,然后往下走。哎。进来了对吧?啊,进来之后呢,往下看,你看进来的不就是个line,这不就是一行内容吗。你看这么一大行内容对吧,一大行内容,然后呢,对应的这个K值呢,K值在这呢,K值我看能不能看到啊。啊K,这你看是ET吧,啊传真是ET,那往下走往下走,这个跳过这一行。那跳过这一行之后呢,这个log里面,哎,它就已经进行一个相应的切割了哈,你说第一个里面的值我看看啊,第一个值你看这是什么,这不是服务器时间吗。
14:02
对吧,服习时间那一个逗号结合后面呢,是对应的这个健身数据。那大家好,判断这个合法性啊,判断合法性,那这个less肯定是等于二的啊,等于二的后面这个呢,也不为空啊,往下走,那往下走这块呢,是具体的,这是形成一个呃,接数据啊,接数据往下走下。啊,这是你看变成了,立刻变成了这个杰森哈,杰森大括开头大框结尾,那往下走啊走到这,走到这呢,我们传进来的是ET,那跟你这个ST比较呢,它没匹配上,往下走到这,到这呢,现在已经匹配上了,再往下进来了,进来之后再往下一下。到这儿到这儿的话,那这个它会取出ET对应的Y流值,那返回值应该是一个数组。那你看一下罩啊,罩就已经变成了一个身数组了哈,啊,所以说你走完之后呢,可以这个啊,执行一下啊,执行完。
15:02
干掉啊。行,那这个就假设他跑完了哈,啊,跑完了就没问题了啊,没问题,你说这个代码写完了,呃,这个写完这个逻辑性啊非常简单对吧?啊,我相信大家应该能搞定啊,就进来一行之后合法性判断,判断之后呢,这里面它实际呢,就是取出它后半部分也是LOG1里面它就是一个Jason,那Jason的话要跟他判断它三个值ST以及其他对应的这个K值分别进行一个解析就OK了。
我来说两句