次の方法で共有


variant_explode_outer

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

構文

spark.tvf.variant_explode_outer(input)

パラメーター

パラメーター タイプ Description
input pyspark.sql.Column 分解する値の入力列。

例示

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

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

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

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

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

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

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

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