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