上次有人说这篇 爆炸函数文章
lateral view explode (split(column,‘exp’)) 爆炸函数-CSDN博客
有点似懂非懂。对于explode函数 和 lateral view 侧视图 为什么要搭配使用?以及 lateral view 侧视图 的原理不理解。今天这篇文章将帮大家回答这个问题。
还是先从explode函数说起:
1,explode函数 的功能介绍
ok,懂了,总结一下就是:explode 函数 是属于表生成函数的一种!!!就是把array数组,map类型的数据,一行变多行!!!
2,explode函数 的使用
一起来试试!!
注意,map是炸开成为2列的哦。
再来一个案例深刻理解它的使用:
4,
emmm,相信大家不仅眼睛会了,手也会了。
3,explode函数单独使用,只展示array的字段
那 explode函数可以直接使用嘛?还是说 和 lateral view 侧视图是一对孪生兄弟,必须固定搭配呢?
ok,发现是可以直接单独使用的!!!!在第二点大家已经知道了。
4,explode函数单独使用,但展示多字段试试
单独使用我们知道了,接下来试试explode 函数 要不要和谁搭配 咱也不知道!!
举个栗子,NBA冠军表及其数据如下:
ok,发现 champion_year 字段是个 array 数组,接下咱们只展示这个字段试试:
结论:发现可以单独把array数据类型的字段炸开。
但是,如果把team_name 和 explode(champion_year) 这两个字段一起展示,
会怎么样呢?
omg,发现报错了。展示一个array的字段没问题,但是再多展示一个字段,就会报错。
不应该啊,没道理啊。
怎么办?可能是我对explode 以及 UDTF 理解的不够透彻!!
ok,好像明白了,team_name 字段 是属于 the_nba_championship 这个表 ,
explode 是属于 另外一张虚拟的表,展示字段是来源两个表,
但是仔细看,我们的sql语句,只查询了 the_nba_championship 一张表!!
难怪,会报错!!!
5,explode函数 和 lateral view 侧视图
lateral view 侧视图 应用而生,和 explode 函数 搭配使用!!!
ok,我又懂了,好家伙,开发团队又给咱专门开发了 lateral view 侧视图,结合explode一块使用。
说白了,其底层逻辑就是那张NBA团队冠军年份表 和 explode之后虚拟的表 join 了一下呗。
但虚拟表叫什么,她的字段又叫啥?这个时候 lateral view 侧视图 就呼之欲出了呗。
看到没有,查了两个表的字段数据,还能进行order by 排序,太香了简直。
这下会用了吧。
6, lateral view 侧视图 的语法
select a.team_name , b.year
from the nba_championship a
lateral view explode(champion_year) b as year
上图 b as year 啥意思:
**b **是对 侧视图 虚拟表(**lateral view explode(champion_year) **) 起的别名,可随意取!!!
**year **是对虚拟表 炸开的字段 起的别名,可随意取!!!
这里埋个伏笔,不知道大家发现了没,一开始说 explode 可以炸开的数据类型有两种,一是array数组,二是 map 数据类型。这里只炸开的是array 数组,那如果是炸开的是map ,lateral view 的语法又该怎么写呢。emmmmm,下次安排,下次一定!!!
7,lateral view 的原理
lateral view 的原理,再次回味一下。
ok,现在我希望你可以吊打这个行业95%的sql-boy或sql-girl了。
如果喜欢,欢迎一键三连。
也欢迎提出意见和建议,下次想看什么,可以留言!!!
版权归原作者 不被定义喵 所有, 如有侵权,请联系我们删除。