Funzione aggregate

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 reduce.

Sintassi

aggregate(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'elemento, il secondo 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 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