Функция from_json (Databricks SQL)

Возвращает значение структуры с jsonStr и schema.

Синтаксис

from_json(jsonStr, schema [, options])

Аргументы

  • jsonStr: выражение STRING, которое задает документ JSON.
  • schema: строковый литерал или вызов функции schema_of_csv (Databricks SQL).
  • options: необязательный литерал MAP<STRING,STRING>, в котором указаны директивы.

Возвращаемое значение

Структура с типами и именами полей, соответствующими определению схемы.

Параметр jsonStr должен иметь правильный формат в отношении schema и options. Параметр schema должен быть определен как имя столбца с разделителями-запятыми и пары типов данных, используемых в примере CREATE TABLE.

Параметр options, если он указан, может принимать любое из следующих значений:

  • primitivesAsString (по умолчанию false): выводит все примитивные значения в виде строкового типа.
  • prefersDecimal (по умолчанию false): выводит все значения с плавающей запятой в виде десятичного типа. Если значения не умещаются в десятичном формате, то выводится значения двойной точности.
  • allowComments (по умолчанию false): игнорирует комментарии в стиле Java и C++ в записях JSON.
  • allowUnquotedFieldNames (по умолчанию false): разрешает использовать имена полей JSON, не заключенные в кавычки.
  • allowSingleQuotes (по умолчанию true): разрешает использовать одинарные кавычки в дополнение к двойным.
  • allowNumericLeadingZeros (по умолчанию false): разрешает ведущие нули в числах (например, 00012).
  • allowBackslashEscapingAnyCharacter (по умолчанию false): разрешает экранирование символов с помощью обратной косой черты.
  • allowUnquotedControlChars (по умолчанию false): разрешает строкам JSON содержать не заключенные в кавычки управляющие символы (символы ASCII со значением меньше 32, включая символы табуляции и перевода строки).
  • mode (по умолчанию PERMISSIVE): разрешает режим работы с поврежденными записями во время синтаксического анализа.
    • PERMISSIVE: при обнаружении поврежденной записи строка в неверный формате помещается в поле, настроенное параметром columnNameOfCorruptRecord, а поля, имеющие неверный формат, устанавливаются в значение NULL. Для сохранения поврежденных записей в пользовательской схеме можно задать поле строкового типа с именем columnNameOfCorruptRecord. Если в схеме нет этого поля, то поврежденные записи удаляются во время синтаксического анализа. При выводе схемы поле columnNameOfCorruptRecord неявным образом добавляется в выходную схему.
    • FAILFAST: вызывает исключение при обнаружении поврежденных записей.
  • columnNameOfCorruptRecord (по умолчанию — значение, заданное в параметре spark.sql.columnNameOfCorruptRecord): разрешает переименование нового поля, содержащего строку в неверном формате, созданную в режиме PERMISSIVE. Переопределяет параметр spark.sql.columnNameOfCorruptRecord.
  • dateFormat (по умолчанию yyyy-MM-dd): задает строку, которая обозначает формат даты. В пользовательских форматах дат применяются форматы, определенные в разделе Шаблоны даты и времени (Databricks SQL). Это относится к типу date.
  • timestampFormat (по умолчанию yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): задает строку, которая указывает формат метки времени. В пользовательских форматах дат применяются форматы, определенные в разделе Шаблоны даты и времени (Databricks SQL). Это относится к типу timestamp.
  • multiLine (по умолчанию false): выполняет синтаксический анализ одной записи, которая может включать несколько строк, в каждом файле.
  • encoding (по умолчанию не задан): позволяет принудительно задать одну из стандартных базовых или расширенных кодировок для JSON-файлов. Например: UTF-16BE, UTF-32LE. Если кодировка не указана и multiLine имеет значение true, то обнаруживается автоматически.
  • lineSep (по умолчанию охватывает все \r, \r\n и \n): задает разделитель строк, который должен использоваться для синтаксического анализа.
  • samplingRatio (по умолчанию 1.0): задает дробные доли входных объектов JSON, используемых для вывода схемы.
  • dropFieldIfAllNull (по умолчанию false): указывает, следует ли игнорировать столбцы со всеми значениями NULL, а также пустые массивы и структуры во время вывода схемы.
  • locale (по умолчанию en-US): sets задает языковой стандарт в виде тега языка в формате IETF BCP 47. Например, используется при синтаксическом анализе дат и меток времени.
  • allowNonNumericNumbers (по умолчанию true): позволяет средству синтаксического анализа JSON распознавать набор нечисловых токенов (NaN) как допустимые числовые значения с плавающей запятой:
    • +INF для положительной бесконечности; также псевдоним +Infinity и Infinity.
    • -INF для отрицательной бесконечности; псевдоним -Infinity.
    • NaN для других нечисловых значений, например результат деления на ноль.

Примеры

> SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
 {1,0.8}

> SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 {2015-08-26 00:00:00}