hive 之 UDTF 之 explode 函数 和 lateral view 侧视图(原理)

上次有人说这篇 爆炸函数文章

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 啥意思:

 是对 侧视图 虚拟表(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了。

如果喜欢,欢迎一键三连。

也欢迎提出意见和建议,下次想看什么,可以留言!!!

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不被定义喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值