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


variant_explode

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

Синтаксис

spark.tvf.variant_explode(input)

Параметры

Параметр Тип Description
input pyspark.sql.Column Входной столбец значений для взрыва.

Примеры

Пример 1. Использование variant_explode с массивом вариантов

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

Пример 2. Использование variant_explode с вариантным объектом

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

Пример 3. Использование variant_explode с пустым массивом вариантов

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

Пример 4. Использование variant_explode с пустым объектом variant

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