Skip to content

explode_outer(column)

Описание

Функция explode_outer() создает новую строку для каждого элемента в массиве или Map-столбце. В отличие от explode(), сохраняет строки с NULL или пустыми массивами/Map.

Параметры

  • column: Column - массив или Map-столбец для развертывания

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

Column - развернутый столбец

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

from pyspark.sql import SparkSession
from pyspark.sql.functions import explode_outer

# Создаем SparkSession
spark = SparkSession.builder.appName("explode_outer_example").getOrCreate()

# Создаем DataFrame с массивом
data = [
    (1, ["a", "b", "c"]),
    (2, ["x", "y"]),
    (3, []),
    (4, None)
]
df = spark.createDataFrame(data, ["id", "array"])

# Развертываем массив с сохранением пустых значений
result = df.select(
    "id",
    explode_outer("array").alias("value")
).show()

# Результат:
# +---+-----+
# | id|value|
# +---+-----+
# |  1|    a|
# |  1|    b|
# |  1|    c|
# |  2|    x|
# |  2|    y|
# |  3| null|
# |  4| null|
# +---+-----+

Примечания

  • Сохраняет строки с NULL или пустыми массивами/Map
  • Для пропуска строк с пустыми массивами используйте explode()
  • Для развертывания с сохранением позиции элемента используйте posexplode_outer()
  • Для развертывания Map-столбца используйте explode_outer() с Map-столбцом