Поделиться через


Функция from_xml

Область применения: флажок Databricks SQL флажок Databricks Runtime 14.1 и более поздних версий

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Возвращает значение структуры, проанализированное с xmlStr помощью schema.

Синтаксис

from_xml(xmlStr, schema [, options])

Аргументы

  • xmlStrSTRING: выражение, указывающее одну XML-запись
  • schemaSTRING: выражение или вызов функции 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}]}