Skip to content

map_entries(map)

Описание

Функция map_entries() возвращает массив структур, где каждая структура содержит пару ключ-значение из карты.

Параметры

  • map: Map - карта, из которой нужно получить записи

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

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

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

from pyspark.sql.functions import map_entries, map_from_arrays, array, lit

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

# Получаем записи карты
df.select(
    "map_data",
    map_entries("map_data").alias("entries")
).show(truncate=False)

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

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

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

Примечания

  • Если карта NULL, возвращается NULL
  • Записи возвращаются в произвольном порядке
  • Для создания карты используйте map_from_arrays() или str_to_map()
  • Для получения только ключей используйте map_keys()
  • Для получения только значений используйте map_values()
  • Для проверки наличия ключа используйте map_contains_key()