配置单元中的max,min函数为空

klsxnrf1  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(418)

我需要包括 NULL 计算时的值 MAX 以及 MIN Hive中的功能。例如,如果我有表:

id    values
A     1
B     3
C     NULL

那么 MAX(values) 你应该回来 NULL .

3yhwsihp

3yhwsihp1#

你可以创建一个标志来表示 NULL 他在你的关键小组。然后可以聚合新创建的列并查找是否存在标志,表明至少存在一个标志 NULL 在小组里。
数据:

key     val
-----------
A       1
A       NULL
B       3  
B       2
C       NULL
C       10
C       4

查询0:

SELECT key
  , CASE WHEN ARRAY_CONTAINS(cs, 1) THEN NULL ELSE m END AS col_max
FROM (
  SELECT key
    , MAX(val) AS m
    , COLLECT_SET(CASE WHEN val IS NULL THEN 1 ELSE 0 END) AS cs
  FROM database.table
  GROUP BY key ) x;

你也可以使用 SUM() (或 MAX() )而不是使用 COLLECT_SET() .
查询1:

SELECT key
  , CASE WHEN cs > 0 THEN NULL ELSE m END AS col_max
FROM (
  SELECT key
    , MAX(val) AS m
    , SUM(CASE WHEN val IS NULL THEN 1 ELSE 0 END) AS cs
  FROM database.table
  GROUP BY key ) x;

输出:

key    col_max
--------------
A      NULL 
B      3 
C      NULL

相关问题