我有个例子
+----+------+------+-------+
| id | val1 | val2 | val3 |
+----+------+------+-------+
| 1 | a | b | c |
| 2 | d | e | f |
| 3 | g | h | i |
我想要这些柱子 val1
, val2
以及 val3
以这种方式换位成行:
+----+------+------+
| id | key | value|
+----+------+------+
| 1 | val1 | a |
| 1 | val2 | b |
| 1 | val3 | c |
| 2 | val1 | d |
| 2 | val2 | e |
| 2 | val3 | f |
| 3 | val1 | g |
| 3 | val2 | h |
| 3 | val3 | i |
我怎样才能做到这一点?
1条答案
按热度按时间stszievb1#
通过分解一个Map结构,就有可能得到这样的变换。因此,首先将3列转换为一个Map(基于https://stackoverflow.com/a/41291156/4725074)然后爆炸:
重要的是使用
select()
而不是一个witchColumn()
当分解一个Map列时会生成两个新列,key
以及value
.结果是将所选列转换为示例中报告的行。