Sdílet prostřednictvím


Funkce aggregate

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Agreguje prvky v poli pomocí vlastního agregátoru. Tato funkce je synonymem pro funkci redukce.

Syntaxe

aggregate(expr, start, merge [, finish])

Argumenty

  • expr: Výraz ARRAY.
  • start: Počáteční hodnota libovolného typu.
  • merge: Funkce lambda použitá k agregaci aktuálního prvku.
  • finish: Volitelná funkce lambda použitá k dokončení agregace.

Návraty

Typ výsledku odpovídá typu výsledku finish funkce lambda, pokud existuje nebo start.

Použije výraz na počáteční stav a všechny prvky v poli a zmenší ho na jeden stav. Konečný stav se převede na konečný výsledek použitím finish funkce.

Funkce merge přebírá dva parametry. První je akumulátor, druhý prvek, který se má agregovat. Akumulátor a výsledek musí být typu start. Volitelná finish funkce přebírá jeden parametr a vrací konečný výsledek.

Příklady

> 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