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.

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>>>')]