Delen via


explode_outer

Retourneert een nieuwe rij voor elk element in de opgegeven matrix of kaart. In tegenstelling tot exploderen, als de matrix/kaart null of leeg is, wordt null geproduceerd. Hiermee wordt de standaardkolomnaam col gebruikt voor elementen in de matrix en keyvalue voor elementen in de kaart, tenzij anders is opgegeven.

Syntaxis

from pyspark.sql import functions as sf

sf.explode_outer(col)

Parameterwaarden

Kenmerk Typologie Description
col pyspark.sql.Column of kolomnaam Doelkolom waaraan moet worden gewerkt.

Retouren

pyspark.sql.Column: één rij per matrixitem of kaartsleutelwaarde.

Voorbeelden

Voorbeeld 1: Een matrixkolom gebruiken

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

Voorbeeld 2: Een kaartkolom gebruiken

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