Teilen über


map_zip_with

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)]