Функция 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}]}