1
NULL
の値を含める必要がありますが、MAX
とMIN
の関数をHiveに計算する必要があります。MAXのMIN、MINの関数がHIVEの場合
id values
A 1
B 3
C NULL
その後、MAX(values)
がNULL
を返す必要があります:たとえば、場合、私はテーブルを持っています。
NULL
の値を含める必要がありますが、MAX
とMIN
の関数をHiveに計算する必要があります。MAXのMIN、MINの関数がHIVEの場合
id values
A 1
B 3
C NULL
その後、MAX(values)
がNULL
を返す必要があります:たとえば、場合、私はテーブルを持っています。
キーグループにNULL
があることを示すフラグを作成できます。次に、その新しく作成された列を集約し、フラグが存在するかどうかを調べると、グループに少なくとも1つの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;
あなたはまた、代わりにCOLLECT_SET()
を使用してのSUM()
(またはMAX()
)を使用することができます。
Query1を:
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