00:00
那刚才呢,我们只是做了一个简单的那个udf的一个案例啊,这个东西肯定是OK的,那接下来呢,把我们之前在提到的要测试的东西去测一下。第一个换库对吧,我们换个库来使用这个函数,看能不能使用啊,看能不能使用,第二个就是我当时说了这个函数,你看啊,我写这个函数有那个这个东西吗?没有了,哎,他没有,那是不是这个函数名字可改呢?我当时说的是不可改啊,对吧?这个东西我们都来测一下啊,大家有个印象,第一我们先测现成的这个是什么。啊,因为它比较简单一点,因为已经创建好了,我们换一个库,呃,Use一下这个。我有哪些货,我得看一下,有这个班长是吧,你们都喜欢用一下班长,班长好用啊,这你都知道是天斯有一个CC是吧,哎,班长你看你说班长好像没用,但是班长跟CC在一块。
01:08
谁谁是谁啊,曹操是吧?ICC里边有ID,哎,正好没有数据,哎,正好只有一个ID吧,那应该是in,我们把数据加载进来,OK吧,漏的黑叫pass,我里边应该我记得有一个aa.ts,大家还记得吧。对吧,应该是12345嘛,当时我写的a.X就是给A代张表用的,呃,Module这个是data塔是aa.kd啊,Into table CC啊,进来select from这个CC这张表,哎,12345,那我们跨库用一下,看这能不能用吧,Select应该如果能用应该是have five。符号,那这个地方应该是一个ID吧,啊,它的字段还是ID啊在这,然后from。
02:04
报错说。无效的函数吧,啊,所以呢,通过语法当中我们也能看出来这个东西。对吧,啊,因为它限定了要库明,所以呢,这个函数只能在当前的一个库里面用的啊,当然你创建这个函这个函数的时候,你注意你可以。在该库体下去创建,你可以不写库明吧,但是哪一块一定要写库?有回音是吗?那一下。好,呃,在哪一块可以必须这里边呢,我们要用的时候,假如说在班长里边想用一下这个I have是不是我们重新给他什么。创建一个啊,重新创建一个,那那我我问的是这里面呢,我重新创建的时候可以不加班长点吧,那什么时候必须要加班长点。
03:03
对,另一个库里边,但更多的在生产环境当中我们都要加,因为生产环境当中我们说了这个搜狗一般是怎么来运行的。放在杠一跟杠F一个文件,或者说后面跟一个搜索语句吧,那这个时候如果说你直接添加的话,它添加的到哪去了。他这个时候你在文件里面添加,它添加的是T。能听懂啊,那个地方是必须要加的,所以呢,你养成习惯,哪怕你在地错的,就现在已经在班长这个库里边了,对吧?啊,你也加一个什么。班长点啊,养成习惯啊,养成习惯,因为你加班长点不会错呀,对吧,假如你不加,你在其他会里边,他有可能会出错呀,就这个意思啊,就是养成习惯加一下啊加一下好。我们刚才创建的时候是不是没有加temporary。有印象吗?那也就是说这个东西应该不是一个临时的,也就是说我把这个窗口给他退了,然后再进来连来说。
04:07
他这个临时的跟那个我们不加临时的,应该就是这个意思吧,那我们看一下能不能用对吧,我们试一下现在的我这个就的库我就不改了,对吧,因为在班长这个库里下呢,反正也用不了select的叫。饭。ID,然后from这个什么,哈哈,这个里边是哈哈是不是。可用吗?啊可用,等会呢,我们创建一个什么。临时的,那这个时候呢,我们来创建一个什么临时的加一个temporary。下页。啊啊,Temporary function。Po。哎,啊,OK temporary这个function对吧,啊,这个东还是一样的。Function,呃,刚才叫ADD five,那我这个叫ADD five two,第二个可以吧,啊,这个名字得换一个,你不能再叫at five了啊好,呃,At five to,然后as还是一个全路径对吧?啊,全面语我们拿一下。
05:17
创建成功了啊,创建成功了,这块要注意一下,那有同学说我们没有添加加啊。这个就有区别了,注意如果,如果你的价包不是放在have下,你当前这种情况你得再加一次。如果放在have Li下,因为have在启动的时候,它默认是会加载这个立下的所有的内容的,能听懂。对吧,你重启了它就会重新加载资源,所以呢,你不需要再去添加了啊,不要再添加,刚才我们添加是因为我客户端已经启动过了。对吧,已经启动过了,你说改了一下力,他会去重新读一下滤网,他不会你要手动添加一下能听懂这个意思啊,所以呢,我建议大家以后呢,那个UDF啊,什么UDTF啊,这些东西都放在哪啊。
06:05
立下这样更方便一点,不用每次都进来添加了啊,不用每次添加了,好这个时候呢,他那我们先看一下它是否可用吧,把它粘贴一下,把这个地方就。不是改成什么了,要改成二了吧,走哎,临时的可用吧,那我们给它干什么CTRC重新进一下啊,重新进一下,因为就是等于这个客户端整个的刷新了一下,对吧?啊,我们同样的还是来走这个搜。前面那个at five我就不用试了,因为已经试过了,是不是啊,肯定是可用的。能看出来临时函数跟永久函数吧,啊就这个区别,那临时函数呢,它会自己退出客户端之后,它就会删掉啊,就会删掉啊,对于我们用杠E跟杠F这种方式呢,那就是相当于是一次性的啊,建议大家呢,后期如果说几次用一次就用临时的啊,因为这个永久的。
07:01
你还得删吧啊,你还要删一下啊,你还要删一下这个呢,就关于这个里边现有的东西的,我们就测完了,接下来我们做一个事情来把这个方法,你这个方法名字对吧。我就叫这个名字。对吧,啊,首先他肯定不会报错,因为你不是复写的方法,他肯定不会给你报错吧,那我们重新干什么,打个包。这个包名呢,我家改了名字了两个,要不然就把刚才那个覆盖掉了,对吧?啊,我让他两个都有,呃,修改受音explore就是在文件夹中当中查看啊。啊,这个改个名字叫udf。OK了,叫优点。给它扔到。还是放在立下,现在有两个,那这个是刚添加进来,是不是我们也要干什么事啊,叫爱的加对吧加。加进来这个也加进来了,然后哦,不行哦,这个问题大了。
08:06
因为他两个全类名一样的。他通过反射的方式找到两个内容对吧?呃,那这样,嗯,我得把这个东西再改一下,因为现在有点问题。CD啊,刚才少做了这个事,因为两个权利名一样嘛,就是有问题的。还有这边下按。杠RF这个叫udf点加吧,我们先给它删掉,呃,这个已经添加进来了,添加进来之后呢,我退出一下重新加载就可以了啊,重新加载一下,把那个加了就不要不要了,我重新打个包,呃,这个呢,我改一下这个。Re。Me,整个的都去na啊嗯,Com微博那就叫com吧,对吧。啊,就改成com啊改成com就只有一个com,因为我保证这个全类名不一致嘛,啊不一致,因为权利名一样的,这个就是问题了,好然后我们呢,把这个重新打个包啊因为这种测试诶怎么。
09:18
嗯。就是恢复到刚才恢复到刚才的原始状态,呃,然后呢,这个地方他出现了这个报名,嗯,这样大家看到有两个是因为我们刚才把这个东西改了,对吧?啊,它不会覆盖这样为了看清楚一点啊,我们重新啊。把它清一下,清一下这个他没了吧,那我现在打出来的包一定是针对于这个内容打出来的包吧,啊,就恢复到原始状态啊。好,呃,这个时候他给他重新出现啊,还是同样的,我们给他改个名字。叫MYDF可以吧,啊,跟之前的都不一样啊,都不一样,然后呢,给它扔进来。
10:03
扔到这个里边,然后把这个我复制一下。这个时候是不是挨的。价一个价对吧。就是这些东西呢,其实有时候嗯,应该不是给你们自己测一下也可以啊啊啊这个都有了,然后C。叫那个方程对吧,我也无,这个时候就无所谓,它是临时的还是永久的对吧?啊,我们主要测的是那个方法尼啊方程,然后叫。ADD five three对吧,啊as全类名啊,给它粘一下。粘的错了。在这个里边啊,等一下。com点这个就不会说通过反射的方式找到另外一个了啊,因为前面名不一样啊,不一样走。添加看着添加填空了,那我们用一下这个啊,我们用一下叫。Select。
11:02
Five。私密对吧,所括号abd,然后。From这个什么,哈哈。他说没有匹配的什么。方法啊,也就是方法名必须叫什么,虽然你看着它没有重写的标记,但是名字不好意思不能用别的,因为它通过回调的方式来做这个事。啊,来到这稍等好,接下来还有一个问题,呃,就是我们看到有很多的一个函数啊,假如说我把它撤撤回来了。哎,都给他撤回来,这个是不是可用的对吧,还是可用的,呃,有的函数我们发现就类似于那个lead等等这些函数。你发现到它传两个参数也行。传三个参数也可以发现没。对吧,例如我们是不是乘两个的时候,只写行号,它给一个默认值。给个nu,但是我传三个,他是不是给一个,就是用我们自己第三个参数来代替那个nu啊,代替那个nu,那这个地方是怎么实现的呢?我们自己能够写一个类似于这种函数呢,就是可以传两个,可以传三个,甚至我还可以传四个。
12:14
嗯,可变行参可以用可变行参肯定可以,那我不用可行参了,可以这样来重载我们试试。因为可变型塞肯定可以了啊,他自己传进来可变型三我就不试了,那我们试一下重载能不能。我们试一下对吧,啊,我们试一下来在这那这两个完全一样贝塔,然后我们再来一个参数叫。DATA2是吗?就是如此的随意嘛,那就这么随意一下吧,好吧,那这个返回结果呢,我们就这样把对塔二给它干什么加进来对吧?啊,我们就做这个事,我们只做这个事,好嗯,这样MYUDF是不是为了全类名不一致,因为右全类名一样的对吧,我这个叫。
13:02
加二可以吧,啊做另外一个测试,因为哎这个还不能直接在这改。我们要改它对吧,啊,Shift加F6。改名字对吧,老师W6就可以了,好这个时候呢,我们测一下它可不可以。啊,那个可变三我就不测了。和平单是什么?可以的吧,啊,这边应该可以的,我们主要测一下这种可不可以,如果说这种可以的话,那我们这个自定义函数是不是就很强大呀?啊,我们有一个名字,哎,两个三个,四个,一个到无数个参数都可以吧,啊就是你写一个功能啊,如果说这个不能,那可变形三,因为可变形三它所实现的一个功能啊,还比较小一点。因为可三你最后几个参数的类型是不是要一样啊,那如果说这个可以,我是in,我写行不行对吧,我in spring in spring我这种都可以吧,啊就很方便啊,就很方便啊,那我们试一下啊试一下。还是为了花钱起见,我们先把它停一下一下。
14:01
然后呢,拍个点点啊,就把它有一些功能,我们能想到的或者想要用的一些功能给它实现一下,好呃,大家来。这个家暴。我也给他要改个名字吧。叫MYDF什么二可以吧啊,统一的都用二。就搞得这个价格就很二是吗。好,给他放进来,表示不一致,然后爱的这样。这件,然后是这个内容吧。Q1的方程,我直接从前面拿一下。呃,ADD five,这个就不能叫ADD five了,那叫什么东西呢?叫爱的吧,因为他不一定是加五,他可能是由三个参数对吧,啊,可能是三个参数,那全类零,我们来改一下吧。来,还是复制比较靠谱啊。
15:02
哎,你看你改就不行了吧,看不见走好,然后我们试一下,如果说这个能用那最最好了,对吧,那select首先呢,我们测一下这个I的。贝塔括号。呃,传一个什么AB逗号,我再传一个什么AB可以吧,啊,就是相当于AB乘以二再加五。对吧,这不AB乘以二再加五嘛,对吧?啊,我们看这个能不能行啊,看这能不能行好from。这个什么好好。诶可以再来一个,是不是还有一个参数的,我单传一个ID是不是只加五六七八六十是不OK的,对吧,那其实have这个udf呢,是很强大的啊,这个东西我们可以用重载的方式看什么。因为它自己系统有很多函数,可以传两个,可以传三个,那我们想着这个东西怎么实现呢?是不是啊,那有的同学提到可变清单,其实可平清单呢,局限性比较大,就是我们所说的你最后类型是不是要一样的?
16:06
因为你可变单three点点点对吧啊对类型要一样的啊,就不要死,那这个时候它可重载这个类型,我们可以干什么,随便改吧啊,你想是因特S啊随便啊无所谓都可以啊,都可以,也就是说这个功能呢,就比较强大一些啊,比较强大这个是整个的当中啊可以重载,你要注意一下就OK了。
我来说两句