Ich muss NULL
Werte während der Berechnung MAX
und MIN
Funktionen in Hive enthalten. Zum Beispiel, wenn ich die Tabelle:NULL in MAX, MIN Funktion in HIVE
id values
A 1
B 3
C NULL
dann MAX(values)
sollte NULL
zurückzukehren.
Ich muss NULL
Werte während der Berechnung MAX
und MIN
Funktionen in Hive enthalten. Zum Beispiel, wenn ich die Tabelle:NULL in MAX, MIN Funktion in HIVE
id values
A 1
B 3
C NULL
dann MAX(values)
sollte NULL
zurückzukehren.
Sie können ein Flag erstellen, das besagt, dass NULL
s in Ihrer Schlüsselgruppe vorhanden sind. Dann können Sie die neu erstellte Spalte aggregieren und nach dem Vorhandensein Ihrer Flagge suchen, um anzuzeigen, dass mindestens eine NULL
in der Gruppe vorhanden ist.
Daten:
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;
Sie können auch SUM()
(oder MAX()
) anstelle COLLECT_SET()
zu verwenden.
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;
Ausgang:
key col_max
--------------
A NULL
B 3
C NULL
Hat diese Lösung für Sie arbeiten? – gobrewers14