使用 Hive 将列转置为同一表中的行

Posted

技术标签:

【中文标题】使用 Hive 将列转置为同一表中的行【英文标题】:Transposing columns to rows in the same table using Hive 【发布时间】:2021-10-10 18:22:20 【问题描述】:

这个问题是here的一个连续性问题。

我有下表:

EmployeeId Dept1 Dept2 Dept3
150        10    55    6

这是获得该结果的查询:

SELECT  EmployeeId, Dept1, Dept2, Dept3 FROM Employee_History

这是我的预期输出:

EmployeeId Dept
150        10
150        55
150        6

【问题讨论】:

N employeeIdDept<M> 的联合用于 M N @astentx 我听不懂 【参考方案1】:

虽然 Hive 不支持 PIVOT 和 UNPIVOT 查询,但您可以使用以下内容:

select  EmployeeId
       ,pe.val    as Dept

from    Employee_History
        lateral view    posexplode(array(dept1,dept2,dept3)) pe
;

【讨论】:

以上是关于使用 Hive 将列转置为同一表中的行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 DB2 sql 代码动态地将列转置为表的行,其中列可能会随着时间的推移而增加且无需更改代码?

t-sql 将列转置为行

oracle如何在没有UNION的情况下将列转置为行

使用交叉应用将列转置为行

将列转置为行 SQL Server

使用 Spark 将列转置为行