例如:
一条记录拆分成多条记录
sql如下:
select id
,tmp.user_name
from testsuer
lateral view explode(split(name,',')) tmp as user_name
;
结果表为:
其中用到的函数主要有 split ,explode ,lateral view .
split(字段值,‘分隔符’):将字段值按照固定分隔符切分成为数组。
explode:将复杂的array或者map结构拆分成多行。
lateral view(侧视图):配合explode(或者其他的UDTF),一个语句生成把单行数据拆解成多行后的数据结果集。形成的虚拟表 tmp 相当于再和原表联结 形成新表。
多条记录合并成为一条记录
将结果表恢复为原表样
sql如下:
select id
,wm_concat(',',name) as name
from testsuer
group by id
;
结果表为:
其中用到的函数主要有wm_concat.
wm_concat(分隔符,字符串):用指定的分隔符做字符串类型的SUM操作。