如何在Hive中去除多列null值且不丢失其他行有效数据
Hive 实现两列错位空值拼接方案
你可以结合row_number()窗口函数和关联操作实现需求,具体逻辑和代码如下:
- 实现逻辑:
- 分别筛选出
basis_adjutment非空、participant_pct非空的两组数据 - 用
row_number()窗口函数给两组数据分别生成从1开始的连续行号 - 按行号关联两组数据,就能得到一一对应拼接后的结果
- 分别筛选出
- 示例SQL:
SELECT a.basis_adjutment, b.participant_pct FROM ( -- 处理basis_adjutment非空的行,生成行号 SELECT basis_adjutment, ROW_NUMBER() OVER() AS rn FROM 你的表名 WHERE basis_adjutment IS NOT NULL ) a FULL JOIN ( -- 处理participant_pct非空的行,生成行号 SELECT participant_pct, ROW_NUMBER() OVER() AS rn FROM 你的表名 WHERE participant_pct IS NOT NULL ) b ON a.rn = b.rn;
如果两列的非空值数量一致,就会直接得到你预期的输出;如果数量不一致,FULL JOIN会保留多出来的行,对应另一列显示null。
内容的提问来源于stack exchange,提问作者akhila nagendra
相关产品推荐
相关产品推荐

