Spark SQL中列组逆透视的更优实现方式咨询
更优的Spark SQL逆透视实现方式
你完全不需要拆分两次UNPIVOT再合并结果,直接在一次UNPIVOT操作里包含所有需要转换的列即可,代码更简洁,执行效率也更高:
SELECT ID, Rank, Criteria FROM Temp_Test_Hardik UNPIVOT ( Rank FOR Criteria IN (A1, A2, A3, B1, B2, B3) )
如果你的Spark版本支持,也可以用stack函数实现逆透视,灵活性更强(静态列场景下和UNPIVOT效果一致):
SELECT ID, Rank, Criteria FROM Temp_Test_Hardik LATERAL VIEW stack(6, 'A1', A1, 'A2', A2, 'A3', A3, 'B1', B1, 'B2', B2, 'B3', B3 ) AS Criteria, Rank
以上两种方式都能直接得到目标输出,无需额外的关联或合并操作。
内容的提问来源于stack exchange,提问作者ConfusedDeveloper
相关产品推荐
相关产品推荐

