Funkcja reduce
Dotyczy: Databricks SQL Databricks Runtime
Agreguje elementy w tablicy przy użyciu niestandardowego agregatora. Ta funkcja jest synonimem funkcji agregującej.
Składnia
reduce(expr, start, merge [, finish] )
Argumenty
expr
: wyrażenieARRAY
.start
: początkowa wartość dowolnego typu.merge
: funkcja lambda używana do agregowania bieżącego elementu.finish
: opcjonalna funkcja lambda używana do finalizowania agregacji.
Zwraca
Typ wyniku jest zgodny z typem finish
wyniku funkcji lambda, jeśli istnieje lub start
.
Stosuje wyrażenie do stanu początkowego i wszystkich elementów tablicy i zmniejsza je do jednego stanu. Stan końcowy jest konwertowany na końcowy wynik przez zastosowanie finish
funkcji.
Funkcja merge
przyjmuje dwa parametry. Pierwszy to akumulator, a drugi to element, który ma zostać zagregowany.
Akumulator i wynik musi być typu start
.
Funkcja opcjonalna finish
przyjmuje jeden parametr i zwraca wynik końcowy.
Przykłady
> 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