Функция from_xml
Область применения: Databricks SQL Databricks Runtime 14.1 и более поздних версий
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Возвращает значение структуры, проанализированное с xmlStr
помощью schema
.
Синтаксис
from_xml(xmlStr, schema [, options])
Аргументы
xmlStr
STRING
: выражение, указывающее одну XML-записьschema
STRING
: выражение или вызов функции schema_of_xml.options
: необязательныйMAP<STRING,STRING>
литерал, указывающий директивы.
Возвраты
С STRUCT
именами полей и типами, соответствующими определению схемы.
Параметр xmlStr
должен иметь правильный формат в отношении schema
и options
. Если xmlStr
не удается выполнить синтаксический анализ NULL
, возвращается.
Параметр schema
должен быть определен как имя столбца с разделителями-запятыми и пары типов данных, используемых в примере CREATE TABLE
.
Параметр options
, если он указывается, может иметь любое из следующих значений:
excludeAttribute
(по умолчаниюfalse
): следует ли исключать атрибуты в элементах.mode
(по умолчаниюPERMISSIVE
): разрешает режим работы с поврежденными записями во время синтаксического анализа.PERMISSIVE
: при обнаружении поврежденной записи неправильно сформированная строка помещается в поле, настроенное с помощьюcolumnNameOfCorruptRecord
, и устанавливаются значения null для неверно сформированных полей. Для сохранения поврежденных записей в пользовательской схеме можно задать поле строкового типа с именемcolumnNameOfCorruptRecord
. Если в схеме нет этого поля, то поврежденные записи удаляются во время синтаксического анализа. При выводе схемы полеcolumnNameOfCorruptRecord
неявным образом добавляется в выходную схему.FAILFAST
: вызывает исключение, если оно соответствует поврежденным записям.
columnNameOfCorruptRecord
(по умолчанию — значение, заданное вspark.sql.columnNameOfCorruptRecord
): позволяет переименовать новое поле, имеющее неправильно сформированную строку, созданную в режимеPERMISSIVE
. Переопределяет параметрspark.sql.columnNameOfCorruptRecord
.inferSchema
(по умолчанию):true
еслиtrue
пытается определить подходящий тип для каждого результирующего атрибута, например логического, числового или даты. Еслиfalse
, все результирующие столбцы будут строкового типа.prefersDecimal
(по умолчаниюfalse
): выводит все значения с плавающей запятой в виде десятичного типа. Если значения не умещаются в десятичном формате, то выводится значения двойной точности.attributePrefix
(по умолчанию_
): префикс атрибутов для отличия атрибутов от элементов. Это будет префикс для имен полей. Строка может быть пустой.valueTag
(по умолчанию_VALUE
): тег, используемый для символьных данных в элементах, которые также имеют атрибуты или дочерние элементы.encoding
(по умолчанию UTF-8): декодирует XML-файлы по указанному типу кодирования.ignoreSurroundingSpaces
(по умолчаниюtrue
): определяет, следует ли пропускать окружающие пробелы из значений, считываемых.rowValidationXSDPath
: Путь к XSD-файлу, который используется для проверки XML для каждой строки по отдельности. Строки, которые не удается проверить, обрабатываются как ошибки синтаксического анализа, как описано выше. XSD не влияет на указанную схему или вывод.ignoreNamespace
(по умолчаниюfalse
): еслиtrue
префиксы пространств имен для XML-элементов и атрибутов игнорируются. Теги<abc:author>
и<def:author>
будут рассматриваться, например, как если бы оба только<author>
. Обратите внимание, что пространства имен нельзя игнорировать в элементе, только его дочерниеrowTag
элементы. Обратите внимание, что синтаксический анализ XML обычно не учитывает пространство имен, даже если значение false.timestampFormat
(по умолчаниюyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): задает строку, которая обозначает формат метки времени. В пользовательских форматах даты применяются форматы шаблонов даты и времени. Это относится к типу timestamp.timestampNTZFormat
(по умолчаниюyyyy-MM-dd'T'HH:mm:ss[.SSS]
): задает строку, указывающую метку времени без формата часового пояса. В пользовательских форматах даты применяются форматы шаблонов даты и времени. Это относится к типу TimestampNTZType.dateFormat
(по умолчаниюyyyy-MM-dd
): задает строку, которая указывает формат даты. В пользовательских форматах даты применяются форматы шаблонов даты и времени. Это относится к типу date.locale
(по умолчанию —en-US
): задает языковой тег в формате IETF BCP 47. Например, используется при синтаксическом анализе дат и меток времени.nullValue
(по умолчанию —null
): задает строковое представление значения NULL.
Примеры
> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'a INT, b DOUBLE');
{"a":1,"b":0.8}
> SELECT from_xml('<p><time>26/08/2015</time></p>', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{ "time": "2015-08-26T00:00:00.000+0000"}
> SELECT from_xml('<p><teacher>Alice</teacher><student><name>Bob</name><rank>1</rank></student><student><name>Charlie</name><rank>2</rank></student></p>',
'STRUCT<teacher: STRING, student: ARRAY<STRUCT<name: STRING, rank: INT>>>');
{"teacher":"Alice","student":[{"name":"Bob","rank":1},{"name":"Charlie","rank":2}]}