Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция
Область применения: 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
именами полей и типами, совпадающими с определением схемы, или значением VARIANT
, если схема состоит из единственного типа Variant
.
Параметр xmlStr
должен иметь правильный формат в отношении schema
и options
. Если не удается выполнить синтаксический анализ xmlStr
, то возвращается NULL
.
schema
должно быть определено как пары имён столбцов и типов данных, разделённых запятыми, как используется, например, в CREATE TABLE
. В версиях Databricks Runtime 16.4 и более поздних schema
можно также определить как тип VARIANT
.
Параметр 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 обычно не распознает пространства имен, даже если это явно не задано. -
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
): задает строку, которая указывает формат даты. Пользовательские форматы даты следуют форматам из шаблонов даты и времени. Это относится к типу данных "дата". -
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}]}
> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'VARIANT');
{"p":{"a":1,"b":0.8}}