Pular para o conteúdo principal

para_objeto_variante

Converte uma coluna contendo entradas aninhadas (array/mapa/estrutura) em variantes, onde mapas e estruturas são convertidos em objetos variantes que não são ordenados, ao contrário das estruturas SQL. Os mapas de entrada só podem ter chaves do tipo string.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.to_variant_object(col)

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou str

Uma coluna com um esquema aninhado ou nome de coluna.

Devoluções

pyspark.sql.Column: uma nova coluna de VariantType.

Exemplos

Exemplo 1 : Convertendo um array contendo uma struct aninhada em uma variante

Python
from pyspark.sql import functions as sf
from pyspark.sql.types import ArrayType, StructType, StructField, StringType, MapType
schema = StructType([
StructField("i", StringType(), True),
StructField("v", ArrayType(StructType([
StructField("a", MapType(StringType(), StringType()), True)
]), True))
])
data = [("1", [{"a": {"b": 2}}])]
df = spark.createDataFrame(data, schema)
df.select(sf.to_variant_object(df.v))
Output
DataFrame[to_variant_object(v): variant]
Python
df.select(sf.to_variant_object(df.v)).show(truncate=False)
Output
+--------------------+
|to_variant_object(v)|
+--------------------+
|[{"a":{"b":"2"}}] |
+--------------------+