Freigeben über


inline_outer

Erstellt aus einem Array von Strukturen eine Tabelle. Im Gegensatz zu Inline wird für jede geschachtelte Spalte null oder leer null erstellt.

Syntax

from pyspark.sql import functions as sf

sf.inline_outer(col)

Die Parameter

Parameter Typ Description
col pyspark.sql.Column oder Spaltenname Eingabespalte mit Werten, die explodiert werden sollen.

Rückkehr

pyspark.sql.Column: Generatorausdruck mit dem inline explodierten Ergebnis.

Examples

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|
+---+----------------------+----+----+