Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
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 |
+---+---------------------------+----+-----+