agregace

Použije binární operátor na počáteční stav a všechny prvky v poli a zmenší to na jeden stav. Konečný stav se převede na konečný výsledek použitím funkce dokončení. Podporuje Spark Connect.

Odpovídající funkci SQL Databricks vizte funkceaggregate.

Syntaxe

from pyspark.sql import functions as dbf

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

Parametry

Parameter Typ Description
col pyspark.sql.Column nebo str Název sloupce nebo výrazu
initialValue pyspark.sql.Column nebo str Počáteční hodnota. Název sloupce nebo výrazu
merge function Binární funkce, která vrací výraz stejného typu jako initialValue.
finish functionvolitelný Volitelná unární funkce použitá k převodu kumulované hodnoty.

Návraty

pyspark.sql.Column: Konečná hodnota po použití agregační funkce

Examples

Příklad 1: Jednoduchá agregace se součtem

from pyspark.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|
+----+

Příklad 2: Agregace s funkcí Dokončení

from pyspark.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|
+----+