00:00
好,那么接下来呢,我们看一看啊,其实刚才我们所聊的,我们把列转行看完啊,然后我们总体想想一下,到底应该去怎么叫法对吧?啊,这个地方呢,是叫列转啊,什么意思呢?这里面有个函数啊,叫exp,昨天好像我们在讲UDUDTF,我在D的时候写过这个函数,最后出来一个UDTF,对吧?但是我没有详细聊,只知道它是一进多数,对吧?它能干什么事呢?它能将一列当中复杂的数组或者说慢结构拆成多行啊,拆成多行,那这个是什么意思呢?就对于X,我们是不是可以看一下DA,然后方程。它呢,就是刚才我们所说的这个例子,对吧,A里边要传一个什么,传一个A,然后呢,他说了这个A应该你想这个A应该是什么结构。
01:08
数组或者卖对吧?啊,你不要放一个进去啊,我们是不是有数组啊,在新from这个太三,诶嘴上说了三,然后不敲是吧?呃,Friends和这个child他是一个数组,一个什么map对吧?好,那我们看一下用explore这个。函数来用一下,先简单的感受一下它的用法,对吧?啊,我们把friends放进去对吧?From这张表,太子三这张表看一下,本来这是一个数组里边的吧,这是一个数组里边的,他本来是一行嘛,现在拆成了什么两行,这就是我们所谓的一。进多出还是指的是行对吧,我们输入一行,然后变成什么多行对吧?这这地方两行是因为我数组当中只有两条元素,如果数组当中三个元素四个元素,那不就对应的三行四行吗?对不对呀,啊是这样的效果。
02:18
它是这样的一个函数,那这个有什么好处呢?对吧,这个看不出来,好像看不出来它的作用,对吧?来看我们的需求,好看我们的需求啊,至于这个let view啊,等会我们再聊啊,因为它对于我们这个I应用的一个扩展,相当于它是属于什么意思呢?它叫侧写啊,就是形成一张侧写表,什么叫侧写?侧面描写语文的一种什么写作手法是吧?啊,其实就是的,就是一张侧写表,到我们来考,就是形成一张侧切表啊,到我们来看一下,来我们来看一下这个东西,现在呢,我们数据集啊,是这样子。
03:09
数据集呢,它是这个样子的。有时候其实这是正常的吧,对于一部电影来说,它是不是可以属于多个不同的品类?对不对,对吧,它可以属于多个不同的品类啊,那有时候我们是不是能看到整个,假如说什么爱奇艺优酷啊等等的,它能显示,诶悬疑片有多少部,什么动作片有多少部,爱情片有多少部,对吧,它会显示这样的内容,但是你现在如果数据底下是这样的结构,你能统计得出来吗?我们是不是应该将当前这个数据变成下面这个样子啊,然后如果说我们拿到这个数据去统计每一个类型的片子到底有多少部,是不是就简单了,我们select count、新go by什么?
04:08
Caty就好了呗,对吧,啊,按照类型分组求看新楚就好,对吧,但是如果说数据是这个样子,你能做到做不到,所以我们需要对category这个列进行什么。要UD TF hi一进多出对吧,你想想看,这不相当于一半之中,本来是一行数据,到这变成什么,是不是多行,主要四行,是不是看这里边有四个了。对吧,而这个X explore这个函数呢,是不是就刚好做这个事情对吧?啊它呢叫炸裂啊,我们叫炸裂啊,再给它炸开啊炸裂函数对吧?好,那我们把这个数据呢,我们来找一下啊。我看一下好,中间是杠T没有问题吧,啊这个数据啊在这,嗯,然后接下来呢,我们去VI一个movie I插入,然后呢,把这个数据导进来保存最出对吧,然后呢,我们到这边去见表啊,当然我们的间表语句呢,咱们用的是这个啊,用的是string开,我看一下,我直接把这个have干掉吧,我就直接倒一下了,因为我是放在呃叫木音做是吧,我把这个改一下。
05:30
啊,我直接把这一套拿过来。直接连接表带插入数据对吧,因为我把逻辑调成我自己的,呃,然后呢,从这个录音符当中去查一下,哎,这个数据呢,就查到了。啊,就查到了,好,那接下来我们想用的是我们先呢单独的把这一列进行炸开,那么问题来了,刚才我们看到这个X,他说了里面要什么东西,要瑞或者说是那个,那完了,我们现在是S命,刚才建那个二就好了,对吧,是不是刚才直接建成这个数组就好了呀,我是不是直接把这个字段可以放进去啊。
06:15
对吧,那现在这个字符串正好呢,给它扩展一个函数啊,其实在这块有一个,哎,有同学知道叫spli猜啊,因为大家现在其实发现到了在help当中函数很多跟Java是怎么样。以的,那如果说用Java的方式把这个子串变成我们想要的悬疑动作,科幻剧情,这个数组你想到的是什么的,对吧,它按照一个什么东西分割啊,其实在汉当中呢,它也有一个Li的。前面写什么是不对,后面写呢,分割符对吧?啊去匹配这个啊,其实写一个正则去匹配啊,当然我们一般是分割符,那我们来看一下啊,首先呢,我们解释一下这个split函数,嗯,先呢用split啊第一个位置传。
07:20
穿字,那不就定这个列吗?对吧?第二个位置穿什么分割符,我们是不是都画很多对吧?From for这张表,哎,果然把我们拆成了什么数组,现在是不是刚才是字串吗?现在呢,数组了啊,既然你已经变成数组了,我们是不是能够给你炸开啊,对吧?所以说炸开应该怎么写啊,就select的我们先写普通的炸开啊X pro。括号里边是不是把它放进去,应该放一个数组吗?他的返回值是个数组啊好,然后呢。
08:00
是不是炸开了对吧?啊,就把我们数据炸开了,好那么问题来了,那刚才我们要的效果是什么?前面带着电影名对不对啊,也就第一个组长这个movie是不是要带上去,好,那我们这那个同学选了太简单了是吧啊movie。加一个字段不就好了呗,不一样报错了。啊,报错了啊,有同学也提到了,主要是它这个行数怎么样啊,它不一样,他们末位你才几行啊,才三行对吧,而你这个X explore炸出来的数据呢,多了。多了对吧,所以这个时候呢,需要咱们的刚才所提到的那个that view侧写,来给它形成一张侧写表来做一个事情,好首先呢,我们把这个拿过来啊,这个数据刚才这个东西是不是跑不了呀,对吧?那我们就刚才要用到我们所谓的这个侧写表let view啊,先写一个level view,然后UTF去炸裂函数,然后一张字写掉,它呢,就会跟原表的字段做一个关联,就刚才我们所说的,不就是两个字段的行数不一样吗?你把它硬生生塞在一起,它怎么怎么刨啊。
09:33
对吧,我本来吨位只有三条,你炸裂的这个列,你看你数一下,这边有四个,这五个12个对吧,三个跟12个怎么配呀,配不了,所以呢,它在炸裂的时候呢,形成测写表的时候,它就会将原来的字段呢,形成它自己的一个关系啊,形成自己关系,所以最终这个circle呢,咱们应该这。From把它呢移出来对吧,形成侧写表的方式,也就是说这块呢,我们这样拿一下啊在这啊形成一个折写表,但是呢,对于他而言,我们就不让他了,而用。
10:17
这个地方,那我们看一下啊,这个地方无非就是说一个用的是let view,然后这个字段是不是刚才我们炸裂的那个字段,对吧,然后呢,我们给一张测写表的别名,然后这是炸出来这个字段的别名。啊,炸出来这个字段的排别名啊,是这样东西,然后呢,我们主要从测写表当中,也就是说给这张表,给原来的这张表啊,是使用了炸裂函数形成了一个侧写表,然后从侧写表当中我们去查这个数据啊,主要是这样的,也就是说这个所谓的侧写表呢,是将我们炸裂出来字段跟原来的表字段呢,还保留关联啊,要不然我保留关联了之后,我数据是不是就一样多了,你看这样子才是我们想要的这个效果吧,所以以后炸裂的时候你要看一下,如果说我们不需要,我们只需要炸裂的这一个列,我就完全select的X explore去炸就好了,如果我们在获取炸出来这一列的同时,还需要原表当中的数据,我们就要加什么,加侧写表啊,加加let去测写表,而且呢,注意啊,Let view X explore是。
11:35
写在from后面的是对这张表进行一个什么测写,而且用什么方式去测写,用炸裂之后的条件去进行测写啊,是这样东西啊,其实说的侧写其实还不是很好理解对吧?那咱们就只要记住,如果说这列出来的这个列还需要跟原来的表当中的字段相关联,那就是这种写法,如果不需要。
12:00
就直接干什么,直接把X写在这就好了,对吧,假如说我不要movie,我只要这一个字段,我是不是可以完全可以这样写对吧,这样还好记一些,如果说不跟原表进行关联,我们直接把这个UDTF函数呢,写在这个位置。如果需要跟原表当中字段做关联,那你就要想起来有一个什么叫relax view,对吧?啊,这样去记一下就好了啊,也不用记那个什么所谓的什么侧写不测写了啊,其实所谓的测写呢,就是说将我们那个炸裂出的字段跟原表的数据保留他自己的一个关联啊啊。
我来说两句