在hive中将行转置/透视到列的最佳方式是什么?

3phpmpom  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(260)

见下表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

我们想把城市类别的值转换成列,即。

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…)”方法不能很好地工作。比方说,即使我们只有100个不同的类别值和10个不同的城市值,类别城市的组合也将是1000。我们需要手工写1000行“case(when…)as category\u 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

有什么好办法吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题