Udostępnij przez


zmniejszyć

Stosuje operator binarny do stanu początkowego i wszystkich elementów tablicy i zmniejsza go do jednego stanu. Stan końcowy jest konwertowany na końcowy wynik przez zastosowanie funkcji finish.

Aby uzyskać odpowiednią funkcję SQL usługi Databricks, zobacz reduce funkcja.

Składnia

from pyspark.databricks.sql import functions as dbf

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

Parametry

Parameter Typ Description
col pyspark.sql.Column lub str Nazwa kolumny lub wyrażenia.
initialValue pyspark.sql.Column lub str Wartość początkowa. Nazwa kolumny lub wyrażenia.
merge function Funkcja binarna zwracająca wyrażenie tego samego typu co zero.
finish function, fakultatywny Opcjonalna funkcja jednoargumentowa używana do konwertowania skumulowanej wartości.

Zwraca

pyspark.sql.Column: końcowa wartość po zastosowaniu funkcji agregującej.

Przykłady

Przykład 1. Prosta redukcja z sumą

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

Przykład 2. Redukcja z funkcją 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.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|
+----+