Compartir a través de


from_xml

Analiza una columna que contiene una cadena XML en una fila con el esquema especificado. Devuelve null, en el caso de una cadena no analizable.

Syntax

from pyspark.sql import functions as sf

sf.from_xml(col, schema, options=None)

Parámetros

Parámetro Tipo Description
col pyspark.sql.Column o str Un nombre de columna o columna en formato XML.
schema StructType, pyspark.sql.Column o str Un literal de cadena StructType, Column o Python con una cadena con formato DDL que se usará al analizar la columna Xml.
options dict, opcional Opciones para controlar el análisis. Acepta las mismas opciones que el origen de datos Xml.

Devoluciones

pyspark.sql.Column: una nueva columna de tipo complejo a partir de un objeto XML determinado.

Examples

Ejemplo 1: Análisis de XML con un esquema de cadena con formato DDL

import pyspark.sql.functions as sf
data = [(1, '''<p><a>1</a></p>''')]
df = spark.createDataFrame(data, ("key", "value"))
# Define the schema using a DDL-formatted string
schema = "STRUCT<a: BIGINT>"
# Parse the XML column using the DDL-formatted schema
df.select(sf.from_xml(df.value, schema).alias("xml")).collect()
[Row(xml=Row(a=1))]

Ejemplo 2: Análisis de XML con un StructType esquema

import pyspark.sql.functions as sf
from pyspark.sql.types import StructType, LongType
data = [(1, '''<p><a>1</a></p>''')]
df = spark.createDataFrame(data, ("key", "value"))
schema = StructType().add("a", LongType())
df.select(sf.from_xml(df.value, schema)).show()
+---------------+
|from_xml(value)|
+---------------+
|            {1}|
+---------------+

Ejemplo 3: Análisis de XML con ArrayType en el esquema

import pyspark.sql.functions as sf
data = [(1, '<p><a>1</a><a>2</a></p>')]
df = spark.createDataFrame(data, ("key", "value"))
# Define the schema with an Array type
schema = "STRUCT<a: ARRAY<BIGINT>>"
# Parse the XML column using the schema with an Array
df.select(sf.from_xml(df.value, schema).alias("xml")).collect()
[Row(xml=Row(a=[1, 2]))]

Ejemplo 4: Análisis de XML mediante schema_of_xml

import pyspark.sql.functions as sf
# Sample data with an XML column
data = [(1, '<p><a>1</a><a>2</a></p>')]
df = spark.createDataFrame(data, ("key", "value"))
# Generate the schema from an example XML value
schema = sf.schema_of_xml(sf.lit(data[0][1]))
# Parse the XML column using the generated schema
df.select(sf.from_xml(df.value, schema).alias("xml")).collect()
[Row(xml=Row(a=[1, 2]))]