【问题标题】:NULL in MAX,MIN function in HIVEMAX中的NULL,HIVE中的MIN函数
【发布时间】:2016-06-28 13:34:29
【问题描述】:

在 Hive 中计算 MAXMIN 函数时,我需要包含 NULL 值。例如,如果我有桌子:

id    values
A     1
B     3
C     NULL

那么MAX(values) 应该返回NULL

【问题讨论】:

  • 这个解决方案对你有用吗?

标签: hadoop hive hdfs bigdata


【解决方案1】:

您可以创建一个标志,表明您的密钥组中有NULLs。然后您可以聚合该新创建的列并查找您的标志是否存在,表明该组中至少有一个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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2011-07-30
    • 2017-09-12
    • 2023-03-30
    • 2013-02-10
    • 1970-01-01
    相关资源
    最近更新 更多