Pular para o conteúdo principal

variante_explode

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. Ignora qualquer entrada que não seja uma matriz/objeto variante, incluindo SQL NULL, valor nulo variante e quaisquer outros valores variantes.

Sintaxe

Python
spark.tvf.variant_explode(input)

Parâmetros

Parâmetro

Tipo

Descrição

input

pyspark.sql.Column

Coluna de entrada com os valores a serem explodidos.

Exemplos

Exemplo 1 : Usando variant_explode com um array de variantes

Python
from pyspark.sql import functions as sf
spark.tvf.variant_explode(sf.parse_json(sf.lit('["hello", "world"]'))).show()
Output
+---+----+-------+
|pos| key| value|
+---+----+-------+
| 0|NULL|"hello"|
| 1|NULL|"world"|
+---+----+-------+

Exemplo 2 : Usando variant_explode com um objeto variant

Python
from pyspark.sql import functions as sf
spark.tvf.variant_explode(sf.parse_json(sf.lit('{"a": true, "b": 3.14}'))).show()
Output
+---+---+-----+
|pos|key|value|
+---+---+-----+
| 0| a| true|
| 1| b| 3.14|
+---+---+-----+

Exemplo 3 : Usando variant_explode com um array de variantes vazio

Python
from pyspark.sql import functions as sf
spark.tvf.variant_explode(sf.parse_json(sf.lit('[]'))).show()
Output
+---+---+-----+
|pos|key|value|
+---+---+-----+
+---+---+-----+

Exemplo 4 : Usando variant_explode com um objeto variant vazio

Python
from pyspark.sql import functions as sf
spark.tvf.variant_explode(sf.parse_json(sf.lit('{}'))).show()
Output
+---+---+-----+
|pos|key|value|
+---+---+-----+
+---+---+-----+