Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
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.
Die entsprechende Databricks SQL-Funktion finden Sie unter reduce Funktion.
Syntax
from pyspark.databricks.sql import functions as dbf
dbf.reduce(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 Null 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 Reduktion 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.reduce("values", dbf.lit(0.0), lambda acc, x: acc + x).alias("sum")).show()
+----+
| sum|
+----+
|42.0|
+----+
Beispiel 2: Reduzierung 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.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|
+----+