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