Fonction reduce
S’applique à : Databricks SQL 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 expressionARRAY
.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