有没有办法在Hive中转置数据? [英] Is there a way to transpose data in Hive
本文介绍了有没有办法在Hive中转置数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的表:
pid高中低
1 10 8 6
2 20 16 12
3 10 6 4
我希望将这些数据存储在Hive的另一个表中以下格式:
pid优先值
1高10
1中8
1低6
2高20
2中16
2低12
3高10
3中6
3低4
解决方案
是的,有一种方法可以在Hive中执行此操作。
$ b
查询:
pre $
CREATE TABLE db.new AS
SELECT pid,priority,value
FROM(
SELECT pid
,MAP('high', (tmp)explode_table AS优先级,值
<$ c
$ c> ---------------------pid优先值
--------------- ------
1低6
1中8
1高10
2低12
2中16
2高20
3低4
3中6
3高10
This is my table:
pid high medium low
1 10 8 6
2 20 16 12
3 10 6 4
I want store this data in another table in Hive with the following format:
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
解决方案
Yes there is a way to do this in Hive. You just need to create a map and then explode said map.
Query:
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
Output:
---------------------
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
这篇关于有没有办法在Hive中转置数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文