Función reduce

Se aplica a:check marked yes Databricks SQL check marked yes Databricks Runtime

Agrega elementos de una matriz mediante un agregador personalizado. Esta función es un sinónimo para la función de agregado.

Sintaxis

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

Argumentos

  • expr: una expresión ARRAY.
  • start: valor inicial de cualquier tipo.
  • merge: función lambda que se usa para agregar el elemento actual.
  • finish: función lambda opcional que se usa para finalizar la agregación.

Devoluciones

El tipo de resultado coincide con el tipo de resultado de la función lambda finish si existe o start.

Aplica una expresión a un estado inicial y a todos los elementos de la matriz, y lo reduce a un único estado. El estado final se convierte en el resultado final aplicando una función finish.

La función merge adopta dos parámetros. El primero es el acumulador, el segundo el elemento que se va a agregar. El acumulador y el resultado deben ser del tipo de start. La función finish opcional toma un parámetro y devuelve el resultado final.

Ejemplos

> 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