map_zip_with

Kolekce: Sloučí dvě dané mapy do jedné mapy použitím funkce u párů klíč-hodnota. Podporuje Spark Connect.

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

Syntaxe

from pyspark.sql import functions as dbf

dbf.map_zip_with(col1=<col1>, col2=<col2>, f=<f>)

Parametry

Parameter Typ Description
col1 pyspark.sql.Column nebo str Název prvního sloupce nebo výrazu sloupce představujícího první mapu.
col2 pyspark.sql.Column nebo str Název druhého sloupce nebo výrazu sloupce představujícího druhou mapu.
f function Ternární funkce, která definuje, jak sloučit hodnoty ze dvou map. Tato funkce by měla vrátit sloupec, který se použije jako hodnota výsledné mapy.

Návraty

pyspark.sql.Column: Nový sloupec mapy, kde každý pár klíč-hodnota je výsledkem použití funkce na odpovídající páry klíč-hodnota ve vstupních mapách.

Examples

Příklad 1: Sloučení dvou map s jednoduchou funkcí

from pyspark.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)]

Příklad 2: Sloučení dvou map s neshodovanými klíči

from pyspark.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)]