Skip to content

inline(column)

Описание

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

Параметры

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

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

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

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

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

# Создаем SparkSession
spark = SparkSession.builder.appName("inline_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, [])
]
df = spark.createDataFrame(data, ["id", "people"])

# Развертываем массив структур
result = df.select(
    "id",
    inline("people")
).show()

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

Примечания

  • Если массив пустой или NULL, строка будет пропущена
  • Для сохранения строк с пустыми массивами используйте inline_outer()
  • Для развертывания простых массивов используйте explode()
  • Для развертывания Map-столбцов используйте explode()