Freigeben über


explode_outer

Gibt eine neue Zeile für jedes einzelne Element im angegebenen Array oder der angegebenen Map zurück. Im Gegensatz zu explodieren, wenn das Array/die Zuordnung null oder leer ist, wird NULL erzeugt. Verwendet den Standardspaltennamen col für Elemente im Array und keyvalue für Elemente in der Zuordnung, sofern nicht anders angegeben.

Syntax

from pyspark.sql import functions as sf

sf.explode_outer(col)

Die Parameter

Parameter Typ Description
col pyspark.sql.Column oder Spaltenname Zielspalte, an der gearbeitet werden soll.

Rückkehr

pyspark.sql.Column: eine Zeile pro Arrayelement oder Zuordnungsschlüsselwert.

Examples

Beispiel 1: Verwenden einer Arrayspalte

from pyspark.sql import functions as sf
df = spark.sql('SELECT * FROM VALUES (1,ARRAY(1,2,3,NULL)), (2,ARRAY()), (3,NULL) AS t(i,a)')
df.select('*', sf.explode_outer('a')).show()
+---+---------------+----+
|  i|              a| col|
+---+---------------+----+
|  1|[1, 2, 3, NULL]|   1|
|  1|[1, 2, 3, NULL]|   2|
|  1|[1, 2, 3, NULL]|   3|
|  1|[1, 2, 3, NULL]|NULL|
|  2|             []|NULL|
|  3|           NULL|NULL|
+---+---------------+----+

Beispiel 2: Verwenden einer Kartenspalte

from pyspark.sql import functions as sf
df = spark.sql('SELECT * FROM VALUES (1,MAP(1,2,3,4,5,NULL)), (2,MAP()), (3,NULL) AS t(i,m)')
df.select('*', sf.explode_outer('m')).show(truncate=False)
+---+---------------------------+----+-----+
|i  |m                          |key |value|
+---+---------------------------+----+-----+
|1  |{1 -> 2, 3 -> 4, 5 -> NULL}|1   |2    |
|1  |{1 -> 2, 3 -> 4, 5 -> NULL}|3   |4    |
|1  |{1 -> 2, 3 -> 4, 5 -> NULL}|5   |NULL |
|2  |{}                         |NULL|NULL |
|3  |NULL                       |NULL|NULL |
+---+---------------------------+----+-----+