我有一个这样的表结构:
使用 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
)))
然后在这两个查询之间执行联接。
我想知道有没有更好的选择来实现这一目标?
有更好的方法。创建一个由 (A, B) 对组成的结构数组,然后使用
inline
该数组将数组分解为行和列请找到以下解决方案。