aggregate
Funkcja
Dotyczy: wyboru SQL usługi Databricks Databricks Runtime
Agreguje elementy w tablicy przy użyciu niestandardowego agregatora. Ta funkcja jest synonimem funkcji redukcji.
Składni
aggregate(expr, start, merge [, finish])
Argumenty
expr
: wyrażenie ARRAY.start
: początkowa wartość dowolnego typu.merge
: funkcja lambda używana do agregowania bieżącego elementu.finish
: opcjonalna funkcja lambda używana do finalizacji 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 wynik końcowy przez zastosowanie finish
funkcji.
Funkcja merge
przyjmuje dwa parametry. Pierwsza to akumulator, drugi element, który ma zostać zagregowany.
Akumulator i wynik muszą być typu start
.
finish
Opcjonalna funkcja przyjmuje jeden parametr i zwraca wynik końcowy.
Przykłady
> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x);
6
> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
60
> SELECT aggregate(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