Aller au contenu principal

to_variant_object

Convertit une colonne contenant des entrées imbriquées (tableau/carte/structure) en variantes où les cartes et les structures sont converties en objets variants qui ne sont pas ordonnés, contrairement aux structures SQL. Les mappages d'entrée ne peuvent avoir que des clés de type chaîne.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.to_variant_object(col)

parameter

parameter

Type

Description

col

pyspark.sql.Column ou str

Une colonne avec un schéma imbriqué ou un nom de colonne.

parameter

Type

Description

col

pyspark.sql.Column ou str

Une colonne avec un schéma imbriqué ou un nom de colonne.

Renvoie

pyspark.sql.Column: une nouvelle colonne de type VariantType.

Exemples

Exemple 1 : Conversion d'un tableau contenant une structure imbriquée en 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"}}] |
+--------------------+