Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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|
+----+