reduce
-Funktion
Gilt für: Databricks SQL Databricks Runtime
Aggregiert Elemente in einem Array unter Verwendung eines benutzerdefinierten Aggregators. Diese Funktion ist ein Synonym für die Aggregatfunktion.
Syntax
reduce(expr, start, merge [, finish] )
Argumente
expr
: EinARRAY
-Ausdruck.start
: Ein Anfangswert eines beliebigen Typs.merge
: Eine Lambdafunktion, die zum Aggregieren des aktuellen Elements verwendet wird.finish
: Eine optionale Lambdafunktion, die zum Abschließen der Aggregation verwendet wird.
Gibt zurück
Der Ergebnistyp stimmt mit dem Ergebnistyp der finish
-Lambdafunktion (sofern vorhanden) oder mit start
überein.
Wendet einen Ausdruck auf einen Anfangszustand und alle Elemente im Array an und reduziert diese auf einen einzelnen Zustand. Der Endzustand wird durch Anwenden einer finish
-Funktion in das Endergebnis konvertiert.
Die merge
-Funktion übernimmt zwei Parameter. Der erste ist der Akkumulator und der zweite ist das Element, das aggregiert werden soll.
Der Akkumulator und das Ergebnis müssen vom Typ start
sein.
Die optionale finish
-Funktion nimmt einen Parameter an und gibt das Endergebnis zurück.
Beispiele
> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x);
6
> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
60
> SELECT reduce(array(1, 2, 3, 4),
named_struct('sum', 0, 'cnt', 0),
(acc, x) -> named_struct('sum', acc.sum + x, 'cnt', acc.cnt + 1),
acc -> acc.sum / acc.cnt) AS avg
2.5