Pular para o conteúdo principal

esquema_de_xml

Analisa uma string XML e infere seu esquema no formato DDL.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.schema_of_xml(xml, options=None)

Parâmetros

Parâmetro

Tipo

Descrição

xml

pyspark.sql.Column ou str

Uma coluna de strings XML ou uma coluna de strings dobrável contendo strings XML.

options

dicionário, opcional

Opções para controlar a análise sintática. Aceita as mesmas opções que a fonte de dados XML.

Devoluções

pyspark.sql.Column: uma representação em string de um StructType analisado a partir do XML fornecido.

Exemplos

Exemplo 1 : Analisando um XML simples com um único elemento

Python
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()
Output
[Row(xml='STRUCT<a: BIGINT>')]

Exemplo 2 : Analisando um XML com múltiplos elementos em uma matriz

Python
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()
Output
[Row(xml='STRUCT<a: ARRAY<BIGINT>>')]

Exemplo 3 : Analisando XML com opções para excluir atributos

Python
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()
Output
[Row(xml='STRUCT<a: BIGINT>')]

Exemplo 4 : Analisando XML com estrutura complexa

Python
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()
Output
[Row(xml='STRUCT<person: STRUCT<age: BIGINT, name: STRING>>')]

Exemplo 5 : Analisando XML com matrizes aninhadas

Python
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()
Output
[Row(xml='STRUCT<values: STRUCT<value: ARRAY<BIGINT>>>')]