Compartir vía


agregado

Aplica un operador binario a un estado inicial y a todos los elementos de la matriz y lo reduce a un único estado. El estado final se convierte en el resultado final aplicando una función finish. Soporta Spark Connect.

Para obtener la función SQL de Databricks correspondiente, consulte aggregate function.

Syntax

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 o str Nombre de columna o expresión.
initialValue pyspark.sql.Column o str Valor inicial. Nombre de columna o expresión.
merge function Función binaria que devuelve la expresión del mismo tipo que initialValue.
finish functionopcional Función unaria opcional que se usa para convertir el valor acumulado.

Devoluciones

pyspark.sql.Column: valor final después de aplicar la función de agregado.

Examples

Ejemplo 1: agregación simple con suma

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

Ejemplo 2: Agregación con la función finish

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