1
我需要包含NULL
值,同時在Hive中計算MAX
和MIN
函數。舉例來說,如果我有表:NULL中的MAX,MIN函數中的NULL
id values
A 1
B 3
C NULL
然後MAX(values)
應該返回NULL
。
我需要包含NULL
值,同時在Hive中計算MAX
和MIN
函數。舉例來說,如果我有表:NULL中的MAX,MIN函數中的NULL
id values
A 1
B 3
C NULL
然後MAX(values)
應該返回NULL
。
您可以創建一個標誌,指出您的密鑰組中有NULL
s。然後,您可以聚合該新創建的列並查找是否存在您的標誌,表示該組中至少有一個NULL
。
數據:
key val
-----------
A 1
A NULL
B 3
B 2
C NULL
C 10
C 4
Query0:
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
爲你做這個解決方案的工作? – gobrewers14