Hive 行列互换经典题

collect_list( [列名] ) 将某一列转换成 数组 不去重
collect_set( [列名] ) 将某一列转换成 数组 去重
concat_ws([分割符],[数组]) 将数组按照分割符转换成字符串
split( [列名],[分割符] ) 将字符串切分成 数组
explode( [数组] ) 将数组炸开成行
posexplode( [数组] ) 将数组炸开成两行 (索引 , 值)
t1表   t2表
tag   id lable
1,2,3   1

A

1,2   2 B
2,3   3 C
结果表
1,2,3 A,B,C    
1,2 A,B    
2,3 B,C    

 

select
tmp.tag tag,
concat_ws(',',collect_set(t2.lable)) lab
from 
(
select t1.tag tag,addColumn.tags from t1
lateral view explode(split(t1.tag,',')) addColumn AS tags
) tmp,
t2
where tmp.tags=t2.id
group by tmp.tag
;

 

你可能感兴趣的:(Hive)