Condividi tramite


Funzione reduce

Si applica a: segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Aggrega gli elementi in una matrice usando un aggregatore personalizzato. Questa funzione è un sinonimo di funzione di aggregazione.

Sintassi

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

Argomenti

  • expr: espressione ARRAY .
  • start: valore iniziale di qualsiasi tipo.
  • merge: funzione lambda usata per aggregare l'elemento corrente.
  • finish: funzione lambda facoltativa usata per finalizzare l'aggregazione.

Valori restituiti

Il tipo di risultato corrisponde al tipo di risultato della finish funzione lambda, se esistente o start.

Applica un'espressione a uno stato iniziale e a tutti gli elementi della matrice e lo riduce a un singolo stato. Lo stato finale viene convertito nel risultato finale applicando una finish funzione.

La merge funzione accetta due parametri. Il primo è l'accumulatore e il secondo è l'elemento da aggregare. L'accumulatore e il risultato devono essere di tipo start. La funzione facoltativa finish accetta un parametro e restituisce il risultato finale.

Esempi

> 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