xml_tuple(xml, *paths)
Описание
Функция xml_tuple()
извлекает несколько значений из XML-документа по указанным XPath-выражениям и возвращает их в виде кортежа.
Параметры
xml
: Column - столбец с XML-строками*paths
: String - одно или несколько XPath-выражений для извлечения значений
Возвращаемое значение
StructType - структура с извлеченными значениями
Пример использования
from pyspark.sql.functions import xml_tuple
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("xml_tuple_example").getOrCreate()
# Создаем DataFrame с XML-строками
data = [
("<product><name>Laptop</name><price>999.99</price><stock>10</stock></product>"),
("<product><name>Phone</name><price>699.99</price><stock>5</stock></product>")
]
df = spark.createDataFrame(data, ["xml"])
# Извлекаем несколько значений из XML
result = df.select(
"xml",
xml_tuple("xml", "product/name", "product/price", "product/stock").alias("product_info")
).select(
"xml",
"product_info.*"
).show(truncate=False)
# Результат:
# +--------------------------------------------------------+------+-------+-----+
# |xml |name |price |stock|
# +--------------------------------------------------------+------+-------+-----+
# |<product><name>Laptop</name><price>999.99</price><stock>10</stock></product>|Laptop|999.99 |10 |
# |<product><name>Phone</name><price>699.99</price><stock>5</stock></product>|Phone |699.99 |5 |
# +--------------------------------------------------------+------+-------+-----+
Примечания
- XPath-выражения должны быть корректными
- Если элемент не найден, возвращается NULL для соответствующего поля
- NULL значения в XML возвращают NULL
- Функция возвращает структуру с полями, соответствующими порядку XPath-выражений
- Для работы с XML также используйте:
xpath()
для извлечения значенийxpath_boolean()
для проверки условийxpath_double()
для извлечения чиселxpath_int()
для извлечения целых чиселxpath_long()
для извлечения длинных целых чиселxpath_short()
для извлечения коротких целых чиселxpath_string()
для извлечения строк