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
spark.tvf.variant_explode(input)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Coluna de entrada com os valores a serem explodidos. |
Exemplos
Exemplo 1 : Usando variant_explode com um array de variantes
from pyspark.sql import functions as sf
spark.tvf.variant_explode(sf.parse_json(sf.lit('["hello", "world"]'))).show()
+---+----+-------+
|pos| key| value|
+---+----+-------+
| 0|NULL|"hello"|
| 1|NULL|"world"|
+---+----+-------+
Exemplo 2 : Usando variant_explode com um objeto variant
from pyspark.sql import functions as sf
spark.tvf.variant_explode(sf.parse_json(sf.lit('{"a": true, "b": 3.14}'))).show()
+---+---+-----+
|pos|key|value|
+---+---+-----+
| 0| a| true|
| 1| b| 3.14|
+---+---+-----+
Exemplo 3 : Usando variant_explode com um array de variantes vazio
from pyspark.sql import functions as sf
spark.tvf.variant_explode(sf.parse_json(sf.lit('[]'))).show()
+---+---+-----+
|pos|key|value|
+---+---+-----+
+---+---+-----+
Exemplo 4 : Usando variant_explode com um objeto variant vazio
from pyspark.sql import functions as sf
spark.tvf.variant_explode(sf.parse_json(sf.lit('{}'))).show()
+---+---+-----+
|pos|key|value|
+---+---+-----+
+---+---+-----+