Freigeben über


aggregate

Wendet einen binären Operator auf einen Anfangszustand und alle Elemente im Array an und reduziert dies auf einen einzelnen Zustand. Der endgültige Zustand wird durch Anwenden einer Endfunktion in das Endergebnis konvertiert. Unterstützt Spark Connect.

Die entsprechende Databricks SQL-Funktion finden Sie unter aggregate Funktion.

Syntax

from pyspark.databricks.sql import functions as dbf

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

Die Parameter

Parameter Typ Description
col pyspark.sql.Column oder str Name der Spalte oder des Ausdrucks.
initialValue pyspark.sql.Column oder str Anfangswert. Name der Spalte oder des Ausdrucks.
merge function Eine binäre Funktion, die den Ausdruck desselben Typs wie initialValue zurückgibt.
finish functionwahlfrei Eine optionale unäre Funktion, die zum Konvertieren des angesammelten Werts verwendet wird.

Rückkehr

pyspark.sql.Column: Endwert, nachdem die Aggregatfunktion angewendet wurde.

Examples

Beispiel 1: Einfache Aggregation mit Summe

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

Beispiel 2: Aggregation mit Ende-Funktion

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