列转行
id | data |
---|---|
1 | a1_a2_a3 |
2 | b |
数据分析时需要行中的数据拆成多列,则需要用到:
1,lateral view
2,explode
原始表table1数据如下:
id | data |
---|---|
1 | a1_a2_a3 |
2 | b |
id | rd |
---|---|
1 | a1 |
1 | a2 |
1 | a3 |
2 | b |
以上数据需要处理成
id | rd |
---|---|
1 | a1 |
1 | a2 |
1 | a3 |
2 | b |
就需要列转行
select id, rd from table1 lateral view explode(split(data,'_')) datas as rd
行转列
id | rd |
---|---|
1 | a1 |
1 | a2 |
1 | a3 |
2 | b |
如果需要把
id | rd |
---|---|
1 | a1 |
1 | a2 |
1 | a3 |
2 | b |
id | data |
---|---|
1 | a1_a2_a3 |
2 | b |
变成
id | data |
---|---|
1 | a1_a2_a3 |
2 | b |
select id, concat_ws(',',collect_set(rd)) as data
from table1
group by id;
网友评论