Partager via


aggregate

Applique un opérateur binaire à un état initial et à tous les éléments du tableau, et le réduit à un seul état. L’état final est converti en résultat final en appliquant une fonction de fin. Prend en charge Spark Connect.

Pour obtenir plus de détails sur la fonction SQL de Databricks correspondante, consultez aggregate.

Syntaxe

from pyspark.databricks.sql import functions as dbf

dbf.aggregate(col=<col>, initialValue=<initialValue>, merge=<merge>, finish=<finish>)

Paramètres

Paramètre Type Descriptif
col pyspark.sql.Column ou str Nom de la colonne ou de l’expression.
initialValue pyspark.sql.Column ou str Valeur initiale. Nom de la colonne ou de l’expression.
merge function Fonction binaire qui retourne l’expression du même type que initialValue.
finish functionoptionnel Fonction unaire facultative utilisée pour convertir la valeur cumulée.

Retours

pyspark.sql.Column: valeur finale après l’application de la fonction d’agrégation.

Examples

Exemple 1 : Agrégation simple avec somme

from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(1, [20.0, 4.0, 2.0, 6.0, 10.0])], ("id", "values"))
df.select(dbf.aggregate("values", dbf.lit(0.0), lambda acc, x: acc + x).alias("sum")).show()
+----+
| sum|
+----+
|42.0|
+----+

Exemple 2 : Agrégation avec fonction de fin

from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(1, [20.0, 4.0, 2.0, 6.0, 10.0])], ("id", "values"))
def merge(acc, x):
    count = acc.count + 1
    sum = acc.sum + x
    return dbf.struct(count.alias("count"), sum.alias("sum"))
df.select(
    dbf.aggregate(
        "values",
        dbf.struct(dbf.lit(0).alias("count"), dbf.lit(0.0).alias("sum")),
        merge,
        lambda acc: acc.sum / acc.count,
    ).alias("mean")
).show()
+----+
|mean|
+----+
| 8.4|
+----+