Partilhar via


agregação

Aplica um operador binário a um estado inicial e a todos os elementos do array, reduzindo-o a um único estado. O estado final é convertido no resultado final aplicando uma função de finalização. Suporta o Spark Connect.

Para a função SQL do Databricks correspondente, veja aggregate função.

Sintaxe

from pyspark.databricks.sql import functions as dbf

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

Parâmetros

Parâmetro Tipo Description
col pyspark.sql.Column ou str Nome da coluna ou expressão.
initialValue pyspark.sql.Column ou str Valor inicial. Nome da coluna ou expressão.
merge function Uma função binária que devolve uma expressão do mesmo tipo que o Valor inicial.
finish function, opcional Uma função unária opcional usada para converter o valor acumulado.

Devoluções

pyspark.sql.Column: valor final após a aplicação da função agregada.

Examples

Exemplo 1: Agregação simples com soma

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|
+----+

Exemplo 2: Agregação com função de acabamento

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|
+----+