Teilen über


variant_explode_outer

Trennt ein Variant-Objekt/Array in mehrere Zeilen, die die Felder/Elemente enthalten. Das Ergebnisschema lautet struct<pos int, key string, value variant>. pos ist die Position des Felds/Elements in seinem übergeordneten Objekt/Array und value ist der Feld-/Elementwert. key ist der Feldname beim Explodieren eines Variant-Objekts oder null, wenn ein Variant-Array explodiert wird. Im Gegensatz zu variant_explode wird NULL erzeugt, wenn die angegebene Variante kein Variantarray/Objekt ist, einschließlich SQL NULL, Variant NULL und anderen Variantenwerten.

Syntax

spark.tvf.variant_explode_outer(input)

Die Parameter

Parameter Typ Description
input pyspark.sql.Column Eingabespalte mit Werten, die explodiert werden sollen.

Examples

Beispiel 1: Verwenden von variant_explode_outer mit einem Variantenarray

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

Beispiel 2: Verwenden von variant_explode_outer mit einem leeren Variantenarray

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

Beispiel 3: Verwenden von variant_explode_outer mit einem Variant-Objekt

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

Beispiel 4: Verwenden von variant_explode_outer mit einem leeren Variant-Objekt

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