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
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 |
|---|---|---|
|
| O nome da primeira coluna ou uma expressão de coluna que representa o primeiro mapa. |
|
| O nome da segunda coluna ou uma expressão de coluna que representa o segundo mapa. |
|
| 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
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)]
Exemplo 2 : Mesclando dois mapas com chaves incompatíveis
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)]