aggregate Funktion

Gäller för:check markerad ja Databricks SQL-kontroll markerad ja 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 valfri typ.
  • 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.

Returnerar

Resultattypen matchar resultattypen för lambda-funktionen om den finish finns eller start.

Tillämpar ett uttryck på ett inledande tillstånd och alla element i matrisen, och minskar 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. Det första är ackumulatorn, det andra elementet som ska aggregeras. Ackumulatorn och resultatet måste vara av starttypen . 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