Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Analyse une chaîne XML et déduit son schéma au format DDL.
Syntaxe
from pyspark.sql import functions as sf
sf.schema_of_xml(xml, options=None)
Paramètres
| Paramètre | Type | Descriptif |
|---|---|---|
xml |
pyspark.sql.Column ou str |
Chaîne XML ou colonne de chaîne pliable contenant une chaîne XML. |
options |
dict, facultatif | Options pour contrôler l’analyse. Accepte les mêmes options que la source de données XML. |
Retours
pyspark.sql.Column: représentation sous forme de chaîne d’un StructType xml donné.
Examples
Exemple 1 : Analyse d’un code XML simple avec un seul élément
from pyspark.sql import functions as sf
df = spark.range(1)
df.select(sf.schema_of_xml(sf.lit('<p><a>1</a></p>')).alias("xml")).collect()
[Row(xml='STRUCT<a: BIGINT>')]
Exemple 2 : Analyse d’un code XML avec plusieurs éléments dans un tableau
from pyspark.sql import functions as sf
df.select(sf.schema_of_xml(sf.lit('<p><a>1</a><a>2</a></p>')).alias("xml")).collect()
[Row(xml='STRUCT<a: ARRAY<BIGINT>>')]
Exemple 3 : Analyse du code XML avec des options permettant d’exclure des attributs
from pyspark.sql import functions as sf
schema = sf.schema_of_xml('<p><a attr="2">1</a></p>', {'excludeAttribute':'true'})
df.select(schema.alias("xml")).collect()
[Row(xml='STRUCT<a: BIGINT>')]
Exemple 4 : Analyse du code XML avec une structure complexe
from pyspark.sql import functions as sf
df.select(
sf.schema_of_xml(
sf.lit('<root><person><name>Alice</name><age>30</age></person></root>')
).alias("xml")
).collect()
[Row(xml='STRUCT<person: STRUCT<age: BIGINT, name: STRING>>')]
Exemple 5 : Analyse du code XML avec des tableaux imbriqués
from pyspark.sql import functions as sf
df.select(
sf.schema_of_xml(
sf.lit('<data><values><value>1</value><value>2</value></values></data>')
).alias("xml")
).collect()
[Row(xml='STRUCT<values: STRUCT<value: ARRAY<BIGINT>>>')]