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