variant_explode_outer

Odděluje objekt nebo pole varianty do více řádků obsahujících jeho pole nebo prvky. Jeho výsledné schéma je struct<pos int, key string, value variant>. pos je pozice pole nebo prvku v nadřazeného objektu nebo pole a value je hodnota pole/prvku. key je název pole při rozbalení objektu varianty nebo má hodnotu NULL při rozbalení pole varianty. Na rozdíl od variant_explode, pokud daná varianta není variantní pole nebo objekt, včetně hodnoty SQL NULL, varianty null a dalších hodnot variant, pak se vytvoří hodnota NULL.

Syntaxe

spark.tvf.variant_explode_outer(input)

Parametry

Parameter Typ Description
input pyspark.sql.Column Vstupní sloupec hodnot, který se má rozbalit.

Examples

Příklad 1: Použití variant_explode_outer s polem 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"|
+---+----+-------+

Příklad 2: Použití variant_explode_outer s prázdným polem variant

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

Příklad 3: Použití variant_explode_outer s objektem varianty

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

Příklad 4: Použití variant_explode_outer s prázdným objektem varianty

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