aggregate Funkcja

Dotyczy:sprawdź oznaczone jako tak Zaznaczone pole wyboru SQL usługi Databricks oznaczone jako tak 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