Поделиться через


inline_outer

Преобразует массив структур в таблицу. В отличие от встроенного массива, если массив имеет значение NULL или пустой, он создается для каждого вложенного столбца.

Синтаксис

from pyspark.sql import functions as sf

sf.inline_outer(col)

Параметры

Параметр Тип Description
col pyspark.sql.Column или имя столбца Входной столбец значений для взрыва.

Возвраты

pyspark.sql.Column: выражение генератора с встроенным результатом взрыва.

Примеры

from pyspark.sql import functions as sf
df = spark.sql('SELECT * FROM VALUES (1,ARRAY(NAMED_STRUCT("a",1,"b",2), NULL, NAMED_STRUCT("a",3,"b",4))), (2,ARRAY()), (3,NULL) AS t(i,s)')
df.printSchema()
root
 |-- i: integer (nullable = false)
 |-- s: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- a: integer (nullable = false)
 |    |    |-- b: integer (nullable = false)
df.select('*', sf.inline_outer('s')).show(truncate=False)
+---+----------------------+----+----+
|i  |s                     |a   |b   |
+---+----------------------+----+----+
|1  |[{1, 2}, NULL, {3, 4}]|1   |2   |
|1  |[{1, 2}, NULL, {3, 4}]|NULL|NULL|
|1  |[{1, 2}, NULL, {3, 4}]|3   |4   |
|2  |[]                    |NULL|NULL|
|3  |NULL                  |NULL|NULL|
+---+----------------------+----+----+