variante_explode_outer
Separa um objeto/matriz variante em várias linhas contendo seus campos/elementos. Seu esquema de resultado é struct<pos int, key string, value variant>. pos é a posição do campo/elemento em seu objeto/matriz pai e value é o valor do campo/elemento. key é o nome do campo ao explodir um objeto variante, ou é NULL ao explodir uma matriz variante. Diferentemente de variant_explode, se a variante fornecida não for uma matriz/objeto de variantes, incluindo SQL NULL, variante nula e quaisquer outros valores de variante, então NULL será produzido.
Sintaxe
spark.tvf.variant_explode_outer(input)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Coluna de entrada com os valores a serem explodidos. |
Exemplos
Exemplo 1 : Usando variant_explode_outer com um array de variantes
from pyspark.sql import functions as sf
spark.tvf.variant_explode_outer(sf.parse_json(sf.lit('["hello", "world"]'))).show()
+---+----+-------+
|pos| key| value|
+---+----+-------+
| 0|NULL|"hello"|
| 1|NULL|"world"|
+---+----+-------+
Exemplo 2 : Usando variant_explode_outer com um array de variantes vazio
from pyspark.sql import functions as sf
spark.tvf.variant_explode_outer(sf.parse_json(sf.lit('[]'))).show()
+----+----+-----+
| pos| key|value|
+----+----+-----+
|NULL|NULL| NULL|
+----+----+-----+
Exemplo 3 : Usando variant_explode_outer com um objeto variant
from pyspark.sql import functions as sf
spark.tvf.variant_explode_outer(sf.parse_json(sf.lit('{"a": true, "b": 3.14}'))).show()
+---+---+-----+
|pos|key|value|
+---+---+-----+
| 0| a| true|
| 1| b| 3.14|
+---+---+-----+
Exemplo 4 : Usando variant_explode_outer com um objeto variant vazio
from pyspark.sql import functions as sf
spark.tvf.variant_explode_outer(sf.parse_json(sf.lit('{}'))).show()
+----+----+-----+
| pos| key|value|
+----+----+-----+
|NULL|NULL| NULL|
+----+----+-----+