Condividi tramite


aggregate

Applica un operatore binario a uno stato iniziale e a tutti gli elementi della matrice e lo riduce a un singolo stato. Lo stato finale viene convertito nel risultato finale applicando una funzione di fine. Supporta Spark Connect.

Per la funzione SQL di Databricks corrispondente, vedere aggregate funzione.

Sintassi

from pyspark.databricks.sql import functions as dbf

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

Parametri

Parametro TIPO Description
col pyspark.sql.Column o str Nome della colonna o dell'espressione.
initialValue pyspark.sql.Column o str Valore iniziale. Nome della colonna o dell'espressione.
merge function Funzione binaria che restituisce l'espressione dello stesso tipo di initialValue.
finish functionopzionale Funzione unaria facoltativa usata per convertire il valore accumulato.

Restituzioni

pyspark.sql.Column: valore finale dopo l'applicazione della funzione di aggregazione.

Esempi

Esempio 1: Aggregazione semplice con somma

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

Esempio 2: Aggregazione con funzione 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|
+----+