Поделиться через


variant_explode_outer

Разделяет вариантный объект или массив на несколько строк, содержащих его поля или элементы. Его результатом является struct<pos int, key string, value variant>схема. pos — это позиция поля или элемента в родительском объекте или массиве и value является значением поля или элемента. key — это имя поля при взрыве объекта variant или значение NULL при взрыве массива вариантов. В отличие от variant_explode, если данный вариант не является вариантным массивом или объектом, включая SQL NULL, variant 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 с пустым объектом 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|
+----+----+-----+