explode_outer
Renvoie une nouvelle ligne pour chaque élément du tableau ou de la carte donné(e). Contrairement à l’explosion, si le tableau/la carte est nul ou vide, un résultat nul est produit. Utilise le nom de colonne par default col pour les éléments du tableau et key et value pour les éléments de la carte, sauf indication contraire.
Syntaxe
Python
from pyspark.sql import functions as sf
sf.explode_outer(col)
parameter
parameter | Type | Description |
|---|---|---|
|
| Colonne cible sur laquelle travailler. |
Renvoie
pyspark.sql.Column: une ligne par élément de tableau ou valeur de clé de mappage.
Exemples
Exemple 1 : Utilisation d'une colonne de tableau
Python
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()
Output
+---+---------------+----+
| 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|
+---+---------------+----+
Exemple 2 : Utilisation d'une colonne de mappage
Python
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)
Output
+---+---------------------------+----+-----+
|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 |
+---+---------------------------+----+-----+