列转行
| 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;
