0


Hive 中的爆炸函数( lateral view 与 explode 用法)

使用场景:

explode就是将hive一行中复杂的array或者map结构拆分成多行。

lateral view用于和split, explode等函数一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表,这里生成的是一个虚拟表。

explode将复杂结构一行拆成多行,然后再用lateral view做各种聚合。


具体使用方法(1):

如下数据: 表名为 table_name_01 中存放两个字段,每个字段值的填充都很完整,现在需要对money字段进行拆分,脚本如下:

idmoney150,40,20230315,9

select id,  money_01
from     table_name_01   -- 表名
lateral view  explode(split(money,’’)) table_tmp  as  money_01

上面的脚本中 lateral view 生成的 一个虚拟表,这个虚拟表的表名就是 table_temp,爆炸函数和split组合后生成的新字段就是 money_01


具体使用方法(2):

如下数据: 表名为 table_name_02 中存放两个字段,字段值的填充中,有空值,

如果对money字段进行拆分,就需要加上 outer 关键字,脚本如下:

idmoney150,40,202303415,9

select id,  money_02
from     table_name_02   -- 表名
lateral view  outer  explode(split(money,’’)) table_tmp  as  money_02

———————————————————————————————————————————

组合使用方法(3):

如下数据: 表名为 table_name_03 中存放两个字段,并对 money值进行求和输出

(1) 对下面money,进行求和输出

idmoney150,40,202303415,9

idmoney11102303424

脚本如下:

select 
id,  
sum(money_03)  as  money
from     table_name_03   -- 表名
lateral view  outer  explode(split(money,’’)) table_tmp  as  money_03
group by id;     -- 根据id,分组求和
标签: hive 数据仓库

本文转载自: https://blog.csdn.net/qq_38603049/article/details/126524196
版权归原作者 小蚂蚁爱吃肉 所有, 如有侵权,请联系我们删除。

“Hive 中的爆炸函数( lateral view 与 explode 用法)”的评论:

还没有评论