Funktionen aggregate
Gäller för: Databricks SQL Databricks Runtime
Aggregerar element i en matris med hjälp av en anpassad aggregator. Den här funktionen är synonym för reduce-funktionen.
Syntax
aggregate(expr, start, merge [, finish])
Argument
expr
: Ett ARRAY-uttryck.start
: Ett initialt värde av vilken typ som helst.merge
: En lambda-funktion som används för att aggregera det aktuella elementet.finish
: En valfri lambda-funktion som används för att slutföra aggregeringen.
Returer
Resultattypen matchar resultattypen för lambda-funktionen om den finish
finns eller start
.
Tillämpar ett uttryck på ett initialt tillstånd och alla element i matrisen och reducerar detta till ett enda tillstånd. Det slutliga tillståndet konverteras till slutresultatet genom att en finish
funktion tillämpas.
Funktionen merge
tar två parametrar. Den första är ackumulatorn, det andra elementet som ska aggregeras.
Ackumulatorn och resultatet måste vara av start
typen .
Den valfria finish
funktionen tar en parameter och returnerar slutresultatet.
Exempel
> 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