メインコンテンツまでスキップ

バリアント爆発外側

バリアント オブジェクト/配列を、そのフィールド/要素を含む複数の行に分割します。結果スキーマはstruct<pos int, key string, value variant>です。posは親オブジェクト/配列内のフィールド/要素の位置であり、 valueはフィールド/要素の値です。key 、バリアント オブジェクトを展開する場合のフィールド名であり、バリアント配列を展開する場合は NULL です。variant_explode とは異なり、指定されたバリアントがバリアント配列/オブジェクト (SQL NULL、バリアント NULL、その他のバリアント値を含む) でない場合は、NULL が生成されます。

構文

Python
spark.tvf.variant_explode_outer(input)

パラメーター

パラメーター

Type

説明

input

pyspark.sql.Column

分解する値の入力列。

例1 : バリアント配列でvariant_explode_outerを使用する

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

例2 : 空のバリアント配列でvariant_explode_outerを使用する

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

例3 : バリアントオブジェクトでvariant_explode_outerを使用する

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

例4 : 空のバリアントオブジェクトでvariant_explode_outerを使用する

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