Compartilhar via


agregação

Aplica um operador binário a um estado inicial e a todos os elementos na matriz e reduz isso a um único estado. O estado final é convertido no resultado final aplicando uma função de término. Dá suporte ao Spark Connect.

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

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 retorna a expressão do mesmo tipo que initialValue.
finish functionopcional 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 de agregação.

Exemplos

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 término

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