HIVE SQL通过Lateral View + explode实现列转行

原表:

a b
Andy <碟中谍>,<谍影重重>,<007>
MOMO <小鞋子>,<朋友啊你的家在哪里>
David ‘’
Lily NULL

实现效果

a b
Andy <碟中谍>
Andy <谍影重重>
Andy <007>
MOMO <小鞋子>
MOMO <朋友啊你的家在哪里>
David ‘’

实现代码:

select a 
	,film_list
from tb_name
lateral view explode(split(b,',')) t as film_list
;

注:

  1. explode函数:处理map结构的字段,将数组转换成多行,所以此处使用了split函数将b列转为array数组类型。
  2. David记录对应的空字符串在列转行时可以保留,但是Lily记录对应的NULL值在列转行时未被保留,若需保留该行记录,可以通过以下方式实现:
select a 
	,film_list
from tb_name
lateral view outer explode(split(b,',')) t as film_list
;

实现效果

a b
Andy <碟中谍>
Andy <谍影重重>
Andy <007>
MOMO <小鞋子>
MOMO <朋友啊你的家在哪里>
David ‘’
Lily NULL

猜你喜欢

转载自blog.csdn.net/p1306252/article/details/132304764
今日推荐