Hive SQL中的lateral view explode 函数使用避坑指南

1.函数说明

EXPLODE(col):将hive一中复杂的array或者map结构拆分成多行。 [爆炸, 炸裂]

LATERAL VIEW  :一入多出

用法:from  表  lateral  view  explode(集合字段)  炸裂表名(随便写)  as  别名;

解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

实例:

movie

category

《疑犯追踪》

悬疑,动作,科幻,剧情

《Lie to me》

悬疑,警匪,动作,心理,剧情

《战狼2》

战争,动作,灾难

select
    name,
    category_name
from 
    movie lateral view explode(category) table_tmp as category_name;

 结果如下:

《疑犯追踪》      悬疑
《疑犯追踪》      动作
《疑犯追踪》      科幻
《疑犯追踪》      剧情
《Lie to me》   悬疑
《Lie to me》   警匪
《Lie to me》   动作
《Lie to me》   心理
《Lie to me》   剧情
《战狼2》        战争
《战狼2》        动作
《战狼2》        灾难

 

 

使用lateral view的时候需要注意的几点:

1. lateral view的位置是from后where条件前;

2. 生成的虚拟表的表名不可省略;

3. from后可带多个lateral view;

4. 如果要拆分的字段有null值,需要使用lateral view outer 替代,避免数据缺失,这个坑我在工作中踩过!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据学习僧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值