在Hive中进行转置/转动行到colume的美妙方法是什么?

时间:2016-08-13 05:31:56

标签: hadoop hive hiveql

给出以下表1

id  category    city    value
100 A   x   10
100 A   y   20
100 B   x   1000
101 A   x   100
101 C   x   2
102 B   x   3

我们希望将category_city的值转换为列,即

id  A_x A_y B_x B_y C_x
100 10  20  1000    NULL    NULL
101 100 NULL    NULL    NULL    2
102 NULL    NULL    3   NULL    NULL

提到的{max(case when when)方法in this thread效果不佳。比方说,即使我们只有100个不同的类别值和10个不同的城市值,category_city的组合也将是1000.我们需要手动编写1000行“case(when ...)as class_city”。这太丑了。

SELECT t.userid
     MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username,
     MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password,
     MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email
FROM TABLE t 
GROUP BY t.userid

有什么好方法吗?

0 个答案:

没有答案