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.
Auflistung: Führt zwei gegebene Zuordnungen in einer einzelnen Karte zusammen, indem eine Funktion auf die Schlüsselwertpaare angewendet wird. Unterstützt Spark Connect.
Die entsprechende Databricks SQL-Funktion finden Sie unter map_zip_with Funktion.
Syntax
from pyspark.databricks.sql import functions as dbf
dbf.map_zip_with(col1=<col1>, col2=<col2>, f=<f>)
Die Parameter
| Parameter | Typ | Description |
|---|---|---|
col1 |
pyspark.sql.Column oder str |
Der Name der ersten Spalte oder eines Spaltenausdrucks, der die erste Zuordnung darstellt. |
col2 |
pyspark.sql.Column oder str |
Der Name der zweiten Spalte oder eines Spaltenausdrucks, der die zweite Zuordnung darstellt. |
f |
function |
Eine ternäre Funktion, die definiert, wie die Werte aus den beiden Zuordnungen zusammengeführt werden. Diese Funktion sollte eine Spalte zurückgeben, die als Wert in der resultierenden Zuordnung verwendet wird. |
Rückkehr
pyspark.sql.Column: Eine neue Kartenspalte, in der jedes Schlüssel-Wert-Paar das Ergebnis ist, dass die Funktion auf die entsprechenden Schlüsselwertpaare in den Eingabezuordnungen angewendet wird.
Examples
Beispiel 1: Zusammenführen von zwei Zuordnungen mit einer einfachen Funktion
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([
(1, {"A": 1, "B": 2}, {"A": 3, "B": 4})],
("id", "map1", "map2"))
row = df.select(
dbf.map_zip_with("map1", "map2", lambda _, v1, v2: v1 + v2).alias("updated_data")
).head()
sorted(row["updated_data"].items())
[('A', 4), ('B', 6)]
Beispiel 2: Zusammenführen von zwei Zuordnungen mit nicht übereinstimmenden Schlüsseln
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([
(1, {"A": 1, "B": 2}, {"B": 3, "C": 4})],
("id", "map1", "map2"))
row = df.select(
dbf.map_zip_with("map1", "map2",
lambda _, v1, v2: dbf.when(v2.isNull(), v1).otherwise(v1 + v2)
).alias("updated_data")
).head()
sorted(row["updated_data"].items())
[('A', 1), ('B', 5), ('C', None)]