You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hive SQL中如何对多列进行横向去重计数(忽略空值)

Hive表横向非空字段去重计数

现有Hive表结构及数据如下:

IDColumn1Column 2Column 3
1ABC
2AAB
3AA

需求:对每行的三列做横向去重计数,统计时忽略空值,最终得到如下结果表:

IDColumn1Column 2Column 3unique_count
1ABC3
2AAB2
3AA1

解法

可以通过Hive的LATERAL VIEW结合explode函数,将每行的三个字段拆分为多行记录,过滤掉空值后,按原表的行维度分组,使用count(distinct)统计去重后的非空字段数量。

对应的SQL语句如下:

SELECT 
    ID,
    Column1,
    `Column 2`,
    `Column 3`,
    COUNT(DISTINCT element) AS unique_count
FROM your_table_name
LATERAL VIEW EXPLODE(ARRAY(Column1, `Column 2`, `Column 3`)) exploded AS element
WHERE element IS NOT NULL
GROUP BY ID, Column1, `Column 2`, `Column 3`;

说明

  • ARRAY(Column1, Column 2, Column 3):将每行的三个字段打包成数组
  • LATERAL VIEW EXPLODE(...):把数组拆分成多行,每个字段值对应一条记录
  • WHERE element IS NOT NULL:过滤掉空值
  • COUNT(DISTINCT element):统计分组内(即原表的一行)去重后的非空字段数量

内容的提问来源于stack exchange,提问作者akshay gvs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:18:27