Dela via


Funktionen reduce

Gäller för: markerad ja Databricks SQL markerad ja Databricks Runtime

Aggregerar element i en matris med hjälp av en anpassad aggregator. Den här funktionen är synonym för aggregerad funktion.

Syntax

reduce(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 och den andra är elementet som ska aggregeras. Ackumulatorn och resultatet måste vara av starttypen . Den valfria finish funktionen tar en parameter och returnerar slutresultatet.

Exempel

> 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