计算 hive 中不包含空值的行数

Pri*_*ngh 3 hive

我有一个查询如何计算表中不存在空值的行数。

假设下面的数据集有 8 列 h1,h2,h3......h8。如果所有列都为 NULL,则计数为 0。如果至少一列具有值,则计数为 1。

h1   h2  h3  h4  h5  h6  h7  h8

U   U   NULL    U   Y   NULL    Y   X

U   NULL    U   U   Y   Y   X   X

U   U   U   NULL    U   NULL    Y   NULL

NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL

X   V   U   U   Y   NULL    Z   X

Y   X   NULL        X   Y   Z   U

X   NULL    U   NULL    NULL    U   Z   Y

NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL
Run Code Online (Sandbox Code Playgroud)

对于上述数据集,答案将为 6。因为只有两行(4 和 6)的所有列均为 NULL。

请建议 hive 中的命令来获取结果。

Kau*_*yak 6

CASE您可以使用,COALESCE和的组合SUM

SELECT SUM (
  CASE
    WHEN COALESCE (h1, h2, h3, h4, h5, h6, h7, h8) IS NOT NULL
    THEN 1
    ELSE 0
  END)
FROM yourtable;
Run Code Online (Sandbox Code Playgroud)