Partager via


Fonction reduce

S’applique à :check marked yes Databricks SQL check marked yes Databricks Runtime

Agrège les éléments d’un tableau à l’aide d’un agrégateur personnalisé. Cette fonction est un synonyme de la fonction aggregate.

Syntaxe

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

Arguments

  • expr: Une expression ARRAY.
  • start : une valeur initiale de n’importe quel type.
  • merge : fonction lambda utilisée pour agréger l’élément actuel.
  • finish : fonction lambda facultative utilisée pour finaliser l’agrégation.

Retours

Le type de résultat correspond au type de résultat de la fonction lambda finish s’il existe ou start.

Applique une expression à un état initial et à tous les éléments du tableau et réduit cette valeur à un seul état. L’état final est converti dans le résultat final en appliquant une fonction finish.

La fonction merge utilise deux paramètres. Le premier étant l’accumulateur et le second étant l’élément à agréger. L’accumulateur et le résultat doivent être du type start. La fonction finish facultative accepte un paramètre et retourne le résultat final.

Exemples

> 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