Aller au contenu principal

variant_get

Extrait une sous-variante de v selon path, et ensuite convertit la sous-variante en targetType. Renvoie la valeur null si le chemin n'existe pas. Lève une exception si la conversion échoue.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.variant_get(v, path, targetType)

parameter

parameter

Type

Description

v

pyspark.sql.Column ou str

Une colonne variante ou un nom de colonne.

path

pyspark.sql.Column ou str

Une colonne contenant les chaînes du chemin d'extraction ou une chaîne représentant le chemin d'extraction. Un chemin valide doit start par $ et est suivi de zéro ou plusieurs segments comme [123], .name, ['name'] ou ["name"].

targetType

str

Le type de données cible à convertir, dans une chaîne formatée DDL.

parameter

Type

Description

v

pyspark.sql.Column ou str

Une colonne variante ou un nom de colonne.

path

pyspark.sql.Column ou str

Une colonne contenant les chaînes du chemin d'extraction ou une chaîne représentant le chemin d'extraction. Un chemin valide doit start par $ et est suivi de zéro ou plusieurs segments comme [123], .name, ['name'] ou ["name"].

targetType

str

Le type de données cible à convertir, dans une chaîne formatée DDL.

Renvoie

pyspark.sql.Column: une colonne de targetType représentant le résultat extrait

Exemples

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([ {'json': '''{ "a" : 1 }''', 'path': '$.a'} ])
v = sf.parse_json(df.json)
df.select(sf.variant_get(v, "$.a", "int").alias("r")).collect()
Output
[Row(r=1)]
Python
df.select(sf.variant_get(v, "$.b", "int").alias("r")).collect()
Output
[Row(r=None)]
Python
df.select(sf.variant_get(sf.parse_json(df.json), df.path, "int").alias("r")).collect()
Output
[Row(r=1)]