snížit

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í.

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

Syntaxe

from pyspark.sql import functions as dbf

dbf.reduce(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 nula.
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é zmenšení 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.reduce("values", dbf.lit(0.0), lambda acc, x: acc + x).alias("sum")).show()
+----+
| sum|
+----+
|42.0|
+----+

Příklad 2: Redukce funkce 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.reduce(
        "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|
+----+