使用Hive实现同表列转行:多部门字段拆分为单行单值的实操问题
Hive列转行实现方案
你可以使用Hive内置的LATERAL VIEW + explode 函数实现需求,具体查询语句如下:
SELECT EmployeeId, Dept FROM Employee_History LATERAL VIEW explode(array(Dept1, Dept2, Dept3)) t AS Dept;
逻辑说明
- 首先调用
array(Dept1, Dept2, Dept3)将同一行的三个部门字段拼接为一个数组 - 再通过
explode函数将数组中的每个元素拆分为独立的行 LATERAL VIEW会将拆分生成的行和原表对应的EmployeeId字段关联,最终得到一员工对应多部门的多行输出结果
注意事项
如果你的表中存在Dept1/Dept2/Dept3为NULL的场景,上述语句会自动过滤掉NULL值的行;如果需要保留NULL对应的行,可以将explode替换为explode_outer。
内容的提问来源于stack exchange,提问作者Martin James
相关产品推荐
相关产品推荐

