Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Коллекция: объединяет две заданные карты в одну карту, применяя функцию к парам "ключ-значение". Поддерживает Spark Connect.
Для соответствующей функции Databricks SQL смотрите функцию map_zip_with.
Синтаксис
from pyspark.databricks.sql import functions as dbf
dbf.map_zip_with(col1=<col1>, col2=<col2>, f=<f>)
Параметры
| Параметр | Тип | Description |
|---|---|---|
col1 |
pyspark.sql.Column или str |
Имя первого столбца или выражения столбца, представляющего первую карту. |
col2 |
pyspark.sql.Column или str |
Имя второго столбца или выражения столбца, представляющего вторую карту. |
f |
function |
Тернарная функция, которая определяет, как объединить значения из двух карт. Эта функция должна возвращать столбец, который будет использоваться в качестве значения в результирующем сопоставлении. |
Возвраты
pyspark.sql.Column: новый столбец карты, где каждая пара "ключ-значение" является результатом применения функции к соответствующим парам "ключ-значение" в входных картах.
Примеры
Пример 1. Объединение двух карт с простой функцией
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)]
Пример 2. Объединение двух карт с несовпадными ключами
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)]