Pular para o conteúdo principal

map_zip_com

Coleção: mesclar dois mapas fornecidos em um único mapa aplicando uma função ao valor keypar`. Compatível com Spark Connect.

Para a função Databricks SQL correspondente, consulte a funçãomap_zip_with.

Sintaxe

Python
from pyspark.databricks.sql import functions as dbf

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

Parâmetros

Parâmetro

Tipo

Descrição

col1

pyspark.sql.Column ou str

O nome da primeira coluna ou uma expressão de coluna que representa o primeiro mapa.

col2

pyspark.sql.Column ou str

O nome da segunda coluna ou uma expressão de coluna que representa o segundo mapa.

f

function

Uma função ternária que define como merge os valores dos dois mapas. Essa função deve retornar uma coluna que será usada como valor no mapa resultante.

Devoluções

pyspark.sql.ColumnUma nova coluna de mapa onde cada par key-valor é o resultado da aplicação da função ao par key-valor correspondente nos mapas de entrada.

Exemplos

Exemplo 1 : Combinando dois mapas com uma função simples

Python
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())
Output
[('A', 4), ('B', 6)]

Exemplo 2 : Mesclando dois mapas com chaves incompatíveis

Python
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())
Output
[('A', 1), ('B', 5), ('C', None)]