赞
踩
explode就是将hive一行中复杂的array或者map结构拆分成多行。
lateral view用于和split, explode等函数一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表,这里生成的是一个虚拟表。
explode将复杂结构一行拆成多行,然后再用lateral view做各种聚合。
如下数据: 表名为 table_name_01 中存放两个字段,每个字段值的填充都很完整,现在需要对money字段进行拆分,脚本如下:
id money 1 50,40,20 2 30 3 15,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
如下数据: 表名为 table_name_02 中存放两个字段,字段值的填充中,有空值,
如果对money字段进行拆分,就需要加上 outer 关键字,脚本如下:
id money 1 50,40,20 2 30 3 4 15,9
- select id, money_02
- from table_name_02 -- 表名
- lateral view outer explode(split(money,’’)) table_tmp as money_02
———————————————————————————————————————————
如下数据: 表名为 table_name_03 中存放两个字段,并对 money值进行求和输出
(1) 对下面money,进行求和输出
id money 1 50,40,20 2 30 3 4 15,9
id money 1 110 2 30 3 4 24
脚本如下:
- 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,分组求和
-
-
-
-
-
-
-
-
-
-
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。