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


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