Skip to content

map_from_entries(array)

Описание

Функция map_from_entries() создает карту из массива структур, где каждая структура содержит поля key и value.

Параметры

  • array: Array - массив структур с полями key и value

Возвращаемое значение

Map - карта, созданная из массива записей

Пример использования

from pyspark.sql.functions import map_from_entries, struct, lit

# Создаем DataFrame с массивами записей
df = spark.createDataFrame([
    ([{"key": "name", "value": "John"}, {"key": "age", "value": 30}, {"key": "salary", "value": 50000}],),
    ([{"key": "id", "value": 1}, {"key": "name", "value": "Alice"}, {"key": "value", "value": 100}],),
    ([{"key": "date", "value": "2023-01-01"}, {"key": "amount", "value": 100.5}, {"key": "category", "value": "expense"}],),
    (None,)
], ["entries"])

# Создаем карту из записей
df.select(
    "entries",
    map_from_entries("entries").alias("map_data")
).show(truncate=False)

# Результат:
# +----------------------------------------------------------------+------------------------------------------+
# |entries                                                         |map_data                                  |
# +----------------------------------------------------------------+------------------------------------------+
# |[{key -> name, value -> John}, {key -> age, value -> 30}, {key -> salary, value -> 50000}]|{name -> John, age -> 30, salary -> 50000}|
# |[{key -> id, value -> 1}, {key -> name, value -> Alice}, {key -> value, value -> 100}]    |{id -> 1, name -> Alice, value -> 100}    |
# |[{key -> date, value -> 2023-01-01}, {key -> amount, value -> 100.5}, {key -> category, value -> expense}]|{date -> 2023-01-01, amount -> 100.5, category -> expense}|
# |null                                                           |null                                      |
# +----------------------------------------------------------------+------------------------------------------+

# Пример с разными типами данных
df = spark.createDataFrame([
    ([{"key": "a", "value": 1}, {"key": "b", "value": 2}, {"key": "c", "value": 3}],),
    ([{"key": "x", "value": 10.5}, {"key": "y", "value": 20.0}, {"key": "z", "value": 30.75}],)
], ["entries"])

df.select(
    "entries",
    map_from_entries("entries").alias("map_data")
).show(truncate=False)

Примечания

  • Если массив NULL, возвращается NULL
  • Если структура не содержит полей key и value, возникает ошибка
  • Для получения записей карты используйте map_entries()
  • Для создания карты из массивов ключей и значений используйте map_from_arrays()
  • Для проверки наличия ключа используйте map_contains_key()