【发布时间】:2014-04-12 02:25:13
【问题描述】:
我知道没有直接的方法可以在 hive 中转置数据。我关注了这个问题:Is there a way to transpose data in Hive?,但由于那里没有最终答案,所以无法一路走下去。
这是我的桌子:
| ID | Code | Proc1 | Proc2 |
| 1 | A | p | e |
| 2 | B | q | f |
| 3 | B | p | f |
| 3 | B | q | h |
| 3 | B | r | j |
| 3 | C | t | k |
这里 Proc1 可以有任意数量的值。 ID、Code 和 Proc1 共同构成该表的唯一键。我想透视/转置此表,以便 Proc1 中的每个唯一值成为一个新列,Proc2 中的相应值是该列中对应行的值。从本质上讲,我试图得到类似的东西:
| ID | Code | p | q | r | t |
| 1 | A | e | | | |
| 2 | B | | f | | |
| 3 | B | f | h | j | |
| 3 | C | | | | k |
在新的转换表中,ID 和代码是唯一的主键。从我上面提到的票中,我可以使用 to_map UDAF 做到这一点。 (免责声明 - 这可能不是朝着正确方向迈出的一步,但如果是,请在此提及)
| ID | Code | Map_Aggregation |
| 1 | A | {p:e} |
| 2 | B | {q:f} |
| 3 | B | {p:f, q:h, r:j } |
| 3 | C | {t:k} |
但不知道如何从这一步转到我想要的数据透视表/转置表。 任何有关如何进行的帮助都会很棒! 谢谢。
【问题讨论】: