Pular para o conteúdo principal

explodir_externo

Retorna uma nova linha para cada elemento na matriz ou mapa fornecido. Diferentemente de explode, se o array/mapa for nulo ou vazio, então será produzido um valor nulo. Usa o nome de coluna default col para elementos na matriz e key e value para elementos no mapa, a menos que especificado de outra forma.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.explode_outer(col)

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou nome da coluna

coluna de destino para trabalhar.

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou nome da coluna

coluna de destino para trabalhar.

Devoluções

pyspark.sql.Column: uma linha por item de matriz ou valor key de mapa.

Exemplos

Exemplo 1 : Usando uma coluna de matriz

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

Exemplo 2 : Usando uma coluna de mapa

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