有没有办法在 Hive 中转置数据
Is there a way to transpose data in Hive
这是我的 table:
pid high medium low
1 10 8 6
2 20 16 12
3 10 6 4
我想将此数据存储在 Hive 的另一个 table 中,格式如下:
pid priority value
1 high 10
1 medium 8
1 low 6
2 high 20
2 medium 16
2 low 12
3 high 10
3 medium 6
3 low 4
是的,在 Hive 中有一种方法可以做到这一点。您只需要创建一个地图,然后分解该地图。
查询:
CREATE TABLE db.new AS
SELECT pid, priority, value
FROM (
SELECT pid
, MAP('high', high, 'medium', medium, 'low', low) AS tmp
FROM db.old ) x
LATERAL VIEW EXPLODE(tmp) explode_table AS priority, value
输出:
---------------------
pid priority value
---------------------
1 low 6
1 medium 8
1 high 10
2 low 12
2 medium 16
2 high 20
3 low 4
3 medium 6
3 high 10
这是我的 table:
pid high medium low
1 10 8 6
2 20 16 12
3 10 6 4
我想将此数据存储在 Hive 的另一个 table 中,格式如下:
pid priority value
1 high 10
1 medium 8
1 low 6
2 high 20
2 medium 16
2 low 12
3 high 10
3 medium 6
3 low 4
是的,在 Hive 中有一种方法可以做到这一点。您只需要创建一个地图,然后分解该地图。
查询:
CREATE TABLE db.new AS
SELECT pid, priority, value
FROM (
SELECT pid
, MAP('high', high, 'medium', medium, 'low', low) AS tmp
FROM db.old ) x
LATERAL VIEW EXPLODE(tmp) explode_table AS priority, value
输出:
---------------------
pid priority value
---------------------
1 low 6
1 medium 8
1 high 10
2 low 12
2 medium 16
2 high 20
3 low 4
3 medium 6
3 high 10