00:00
Doris在1.0呢,对于一些table function做了一些支持,像我们经常用一些炸裂函数啊,Letter view,然后做一个测试表,测试表。那经常我们是实现什么呢,比如说。已经table table方就是有点类似UDTF嘛,T就是table嘛,对吧,就一行数据进来,出来是一张多行,你可以理解为一行变多行。一行变多行,这个所以我们习惯上称之为炸裂,对吧,Exp。呃,那我们来看一下吧,那首先呢,你进入一个官网。官网之后,这有一个circle手册,点开有一个函数对吧,再点,那点开之后这里有一类叫table function,点开那这里就有几个炸裂函数啊有这么四类,那在我们课件当中都给大家。列出来了,那我们先创建一张测试用的表。
01:02
先建表,建完表之后我搜tables看一下TEST3,这张表很简单,两个字段,一个K1,一个K2啊,一个整形,一个字符串。没了。好,那接下来插入这么几条数据。插入完之后,我们再查看一下这张表,S select、新from test3。那是这个样子啊。那这一列回头就是准备被用来炸裂呗,你看我用逗号分格啊,那这边就简单的一个数字,那我们第看第一个啊。Explore bit map。它的作用呢,是将一个bit map类型把它展开,也就炸开,那我这边的语法大家看一下啊,From test3,然后呢,That view is pro bit map,由于我原表没有,所以我这边给就是用bit map empty创建一个空的一个一个。Bit map。然后呢,我们的语法跟那个have的语法是一样的啊,测试这个letter view的写法是不是在表明后面写呀。
02:08
啊,这关键词,然后后面跟上这个函数,就相当于说炸裂成了一张临时表了,这个是T1,这个是T2,它俩会进行关联是不是,所以你把这张临时表T2给起一个别名,我叫TP1,啊,就炸裂之后这张临时表我叫TP1。然后呢,As后面是不是写一个列名啊,临时表的列名对不对啊,这个炸开的列我叫E1,好,然后后面就是把这两个列呃意义也查询出来,看一个效果。那old就是做个排序呗,来我们查看一下。那这边大家要注意,要先看一个什么变量啊。Enable view。来,我们瘦一下。Variables like。Lateral。
03:01
你看这个参数默认是false,我们要先怎么样先把它开启,那么就set这个参数等于true。设置成处刚才的语句就可以执行了,你看。炸开都是空,为什么?因为我这个bit map是个什么,是个空的bit map,所以是个闹。看看。对吧,是个闹,那我们也可以用其他的,比如说像官方的案例bit。From string1,也就是说有一个位图里面全是一啊,那这个。或者呢,你可以去指定呗,对吧。那我们就看这个吧。比如说这个,那我把案例也替换成这个。呃,省得大家一看呢,全是一个空的。
04:00
这是我们的TEST3啊。拷贝。再来看一个案例啊。你看这边是我手动创建了一个bit map里面呢,呃是一对不对,只有一个一嘛,然后呢,跟原表的数据K1列123456123456,跟这个一做一个交。那可不就是每一列都是一个一吗?是不是能理解吧?笛卡尔基啊。这个是特别简单的bit map。嗯。第二个是SP split split是不是切分呢?它可以将一个字符串按指定的分隔符切分成多个字符串。那么看一下这个案例啊,一样的语法在表明后面跟上letter letter view,然后呢,跟上这个函数,我将K2这一列按照逗号进行切分,那K2这一列还记不记得长啥样?是不是长这样?是吧,那比如说123是不是可以被切分成123,是不是一行炸成了三行啊对不对。
05:09
啊,其他都一样啊,那我这边就选择一行一行来看呢,比如说沃尔K等于一,然后跟他做一个关联,要不然一下子太多了啊。你看现在是个空的,为什么呢。然后把它截个图吧。这是原表数据。也就是说我只拿这一行数据来炸,那这边啥也没有,那自然是什么啥也没有,那我们再切一下呗,Y啊,K等于二。是个闹,因为它只有一个什么闹,再来炸第三行试试,Ke等于三。呃,等于三的时候,它只有一个逗号呗。也就前面一个空,后面一个空下来说一这K21炸裂变成了两行空串对吧,那可不就是两行结果嘛,你再来炸四啊。
06:00
四的话只有一个数据,嗯,切不了炸不了啊。出来还是一条。那接下来看最经典的五。你看。K2这一列123是不是切分成1233行数据啊,对吧,那再跟K1这个五进行笛卡尔机,那不就是这个结果吗。那同样的道理,你可以看一下六。对吧。这么去看就行,或者呢,你这个过滤条件直接也不要了。这样是不是更直观一点是吧,那我们这个案例也可以把这个过滤条件给干了吧。那这样大家看的更直白一点。这是一个split,还有一个Jason,展开一个Jason数组,那这边它是分三类啊,一类是什么?展开是int类型,一个是double类型,一个是dream类型。也就是说原先数据的格式啊,数据的类型,比如说我现在是不是给了一个123这么一个。瑞数组啊,对吧,那我们看看能不能把它给炸开。
07:10
你看是不是炸开了。呃,你看我左边是K1嘛,右边是炸开的列,呃,那一这一行是不是跟炸开了123进行就业,二这一行跟炸开了123就业,炸开了三跟123就对吧?啊就这么回事。这个是int类型,那同样也支持原数据,这个数组里面的数据是一个double类型,那这个时候我们用的函数叫explore Jason double,对吧?那比如说1.0 2.0,三点零一样可以炸开,我们看一眼。这个结果就不用不用再看了吧,第三一种呢是如果数组里面是字符串也可以对吧,那这边的函数用的就是explore的Json string。那一样的,还是这个渔具拿过来。这个可以炸开吗?那我这个能不能改一下,说我这边是字符串,但是我用的函数是一个int函数啊,那会有一个什么效果呢。
08:08
然后一回车,你发现没有,就是这个一,这个三,它可以识别成什么整形,但是这个B这个字符串它只能是闹了,因为类型不一样,只能是个闹,对不对。这个就是我们使用了这个。呃,Jason瑞。炸开还有一个叫explore的numbers,获得一个从零到N的序列,那比如说你看我这里写的explore的NUMBER5,那我这边能获得就是什么一个01234。对吧,这是左闭右开啊,不包含这个五啊,从零开始,你看这边是开区间右边。相当说是一个固定的一个字典表是吧,码表。好。那么可以看一下lo number目前还怎么样,还不支持啊,那回头我把它删掉。
09:05
那么看一下官方的说明。Explore numbers。还不支持啊?
我来说两句