Megosztás a következőn keresztül:


A aggregate függvény

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime

Egy tömb elemeit összesíti egy egyéni összesítő használatával. Ez a függvény a függvény szinonimájareduce.

Szintaxis

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

Argumentumok

  • expr: Tömb kifejezés.
  • start: Bármilyen típusú kezdeti érték.
  • merge: Az aktuális elem összesítéséhez használt lambda függvény.
  • finish: Az aggregáció véglegesítéséhez használt opcionális lambda függvény.

Visszaküldések

Az eredmény típusa megegyezik a lambda függvény eredménytípusával finish , ha létezik vagy start.

Egy kifejezést alkalmaz a kezdeti állapotra és a tömb összes elemére, majd ezt egyetlen állapotra csökkenti. A végső állapot függvény finish alkalmazásával lesz átalakítva a végső eredményre.

A merge függvény két paramétert vesz igénybe. Az első az akkumulátor, a második az összesítendő elem. Az akkumulátornak és az eredménynek a következő típusúnak startkell lennie: . Az opcionális finish függvény egy paramétert vesz fel, és visszaadja a végeredményt.

Példák

> 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