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()