Compartilhar via


Função reduce

Aplica-se a: marca de seleção positiva Databricks SQL marca de seleção positiva Azure Databricks Runtime

Agrega elementos em uma matriz usando um agregador personalizado. Essa função é sinônimo da função de agregação.

Sintaxe

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

Argumentos

  • expr: uma expressão ARRAY.
  • start: um valor inicial de qualquer tipo.
  • merge: uma função lambda usada para agregar o elemento atual.
  • finish: uma função lambda opcional usada para finalizar a agregação.

Retornos

O tipo de resultado corresponde ao tipo da função lambda finish, se existir, ou a start.

Aplica uma expressão a um estado inicial e a todos os elementos na matriz e reduz isso a um único estado. O estado final é convertido no resultado final aplicando uma função finish.

A função merge usa dois parâmetros. O primeiro é o acumulador e o segundo é o elemento que será agregado. O acumulador e o resultado devem ser do tipo de start. A função opcional finish usa um parâmetro e retorna o resultado final.

Exemplos

> 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