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()