reducefunction (Databricks SQL)

Agrega elementos de una matriz mediante un agregador personalizado.

Sintaxis

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

Argumentos

  • expr: 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 finish función lambda 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 finish función.

La merge función toma 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.

Esta función es un sinónimo de la función de agregado (Databricks SQL).

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