MAX中的NULL,HIVE中的MIN函数
Posted
技术标签:
【中文标题】MAX中的NULL,HIVE中的MIN函数【英文标题】:NULL in MAX,MIN function in HIVE 【发布时间】:2016-06-28 13:34:29 【问题描述】:在 Hive 中计算 MAX
和 MIN
函数时,我需要包含 NULL
值。例如,如果我有桌子:
id values
A 1
B 3
C NULL
那么MAX(values)
应该返回NULL
。
【问题讨论】:
这个解决方案对你有用吗? 【参考方案1】:您可以创建一个标志,表明您的密钥组中有NULL
s。然后您可以聚合该新创建的列并查找您的标志是否存在,表明该组中至少有一个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
【讨论】:
以上是关于MAX中的NULL,HIVE中的MIN函数的主要内容,如果未能解决你的问题,请参考以下文章