Udostępnij za pośrednictwem


Funkcja aggregate

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Agreguje elementy w tablicy przy użyciu niestandardowego agregatora. Ta funkcja jest synonimem funkcji redukcji.

Składnia

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 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 jest akumulatorem, drugim elementem do agregowania. Akumulator i wynik musi być typu start. Funkcja opcjonalna finish 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