Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Retourne une nouvelle ligne pour chaque élément du tableau ou de la carte donné. Contrairement à l’explosion, si le tableau/carte est null ou vide, la valeur null est produite. Utilise le nom col de colonne par défaut pour les éléments du tableau et keyvalue pour les éléments de la carte, sauf indication contraire.
Syntaxe
from pyspark.sql import functions as sf
sf.explode_outer(col)
Paramètres
| Paramètre | Type | Descriptif |
|---|---|---|
col |
pyspark.sql.Column ou nom de colonne |
Colonne cible sur laquelle travailler. |
Retours
pyspark.sql.Column: une ligne par élément de tableau ou valeur de clé de carte.
Examples
Exemple 1 : Utilisation d’une colonne de tableau
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|
+---+---------------+----+
Exemple 2 : Utilisation d’une colonne de carte
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 |
+---+---------------------------+----+-----+