Skip to content

inline_outer(column)

Описание

Функция inline_outer() развертывает массив структур в отдельные строки. Каждая структура в массиве становится отдельной строкой с полями структуры в качестве столбцов. В отличие от inline(), сохраняет строки с NULL или пустыми массивами.

Параметры

  • column: Column - массив структур для развертывания

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

StructType - развернутые поля структуры

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

from pyspark.sql import SparkSession
from pyspark.sql.functions import inline_outer
from pyspark.sql.types import StructType, StructField, StringType, IntegerType

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

# Определяем схему для структуры
schema = StructType([
    StructField("name", StringType()),
    StructField("age", IntegerType())
])

# Создаем DataFrame с массивом структур
data = [
    (1, [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]),
    (2, [{"name": "Charlie", "age": 35}]),
    (3, []),
    (4, None)
]
df = spark.createDataFrame(data, ["id", "people"])

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

# Результат:
# +---+-------+----+
# | id|   name| age|
# +---+-------+----+
# |  1|  Alice|  25|
# |  1|    Bob|  30|
# |  2|Charlie|  35|
# |  3|   null|null|
# |  4|   null|null|
# +---+-------+----+

Примечания

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