posexplode_outer(column)
Описание
Функция posexplode_outer() создает новую строку для каждого элемента в массиве или Map-столбце, сохраняя позицию элемента. В отличие от posexplode(), сохраняет строки с NULL или пустыми массивами/Map.
Параметры
column: Column - массив или Map-столбец для развертывания
Возвращаемое значение
StructType - структура с полями pos (позиция) и col (значение)
Пример использования
from pyspark.sql import SparkSession
from pyspark.sql.functions import posexplode_outer
# Создаем SparkSession
spark = SparkSession.builder.appName("posexplode_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",
    posexplode_outer("array").alias("pos", "value")
).show()
# Результат:
# +---+----+-----+
# | id| pos|value|
# +---+----+-----+
# |  1|   0|    a|
# |  1|   1|    b|
# |  1|   2|    c|
# |  2|   0|    x|
# |  2|   1|    y|
# |  3|null| null|
# |  4|null| null|
# +---+----+-----+
 Примечания
- Сохраняет строки с NULL или пустыми массивами/Map
 - Для пропуска строк с пустыми массивами используйте 
posexplode() - Для развертывания без сохранения позиции используйте 
explode_outer() - Для развертывания Map-столбца используйте 
posexplode_outer()с Map-столбцом