Compartir a través de


variant_explode_outer

Separa un objeto o matriz variant en varias filas que contienen sus campos o elementos. Su esquema de resultados es struct<pos int, key string, value variant>. pos es la posición del campo o elemento en su objeto o matriz primario, y value es el valor de campo o elemento. key es el nombre de campo al explotar un objeto variant o es NULL al explotar una matriz variant. A diferencia de variant_explode, si la variante especificada no es una matriz o objeto variant, incluidos SQL NULL, variant null y cualquier otro valor variant, se genera NULL.

Syntax

spark.tvf.variant_explode_outer(input)

Parámetros

Parámetro Tipo Description
input pyspark.sql.Column Columna de entrada de valores que se va a explotar.

Examples

Ejemplo 1: Uso de variant_explode_outer con una matriz variant

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

Ejemplo 2: Uso de variant_explode_outer con una matriz de variantes vacía

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

Ejemplo 3: Uso de variant_explode_outer con un 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|
+---+---+-----+

Ejemplo 4: Uso de variant_explode_outer con un objeto variant vacío

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