Partager via


Fonction aggregate

S’applique à : case marquée oui Databricks SQL case marquée oui Databricks Runtime

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

Syntaxe

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

Arguments

  • expr : 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, le deuxième 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 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