我有一个这样的表结构:
使用SparkSQL,我想将这些列反透视为行,以产生如下输出:
到目前为止,有两个实现了这一点,我已经编写了两个查询,一个用于A,一个用于B,如下所示:
select ID, Rank, Criteria from (
SELECT *
FROM Temp_Test_Hardik
UNPIVOT( Rank for Criteria IN (
A1,
A2,
A3
)))
和
select ID, Rank, Criteria from (
SELECT *
FROM Temp_Test_Hardik
UNPIVOT( Rank for Criteria IN (
B1,
B2,
B3
)))
然后在这两个查询之间执行连接。
我想知道是否有更好的选择来实现这一目标?
2条答案
按热度按时间jexiocij1#
有一个更好的方法,创建一个由(A,B)对组成的结构体数组,然后使用
inline
将数组分解为行和列sbtkgmzw2#
请找到下面的解决方案。