Funzione reduce
Si applica a: Databricks SQL 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
: espressioneARRAY
.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