Skip to content

tags: description: Функция map_from_arrays() создает карту из двух массивов: один содержит ключи, другой - соответствующие значения.

- map functions

map_from_arrays(keys, values)

Описание

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

Параметры

  • keys: Array - массив ключей
  • values: Array - массив значений

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

Map - карта, созданная из пар ключ-значение

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

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

# Создаем DataFrame с массивами ключей и значений
df = spark.createDataFrame([
    (["name", "age", "salary"], ["John", 30, 50000]),
    (["id", "name", "value"], [1, "Alice", 100]),
    (["date", "amount", "category"], ["2023-01-01", 100.5, "expense"]),
    (None, None)
], ["keys", "values"])

# Создаем карту из массивов
df.select(
    "keys",
    "values",
    map_from_arrays("keys", "values").alias("map_data")
).show(truncate=False)

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

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

df.select(
    "keys",
    "values",
    map_from_arrays("keys", "values").alias("map_data")
).show(truncate=False)

Примечания

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