Udostępnij za pośrednictwem


Funkcja reduce

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 agregującej.

Składnia

reduce(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 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