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