Функция from_json

Область применения:check marked yes Databricks SQL check marked yes Databricks Runtime

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

Синтаксис

from_json(jsonStr, schema [, options])

Аргументы

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

До Databricks Runtime 12.2 schema должен быть литералом.

Возвраты

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

Параметр 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): задает строку, которая указывает формат даты. В пользовательских форматах даты применяются форматы шаблонов даты и времени. Это относится к типу date.
  • timestampFormat (по умолчанию yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): задает строку, которая обозначает формат метки времени. В пользовательских форматах даты применяются форматы шаблонов даты и времени. Это относится к типу 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 для других нечисловых значений, например результат деления на ноль.
  • readerCaseSensitive (по умолчанию true): указывает поведение конфиденциальности регистра при rescuedDataColumn включении. Если значение равно true, столбцы данных, имена которых отличаются по регистру от схемы, восстанавливаются; в противном случае данные считываются без учета регистра. Доступно в Databricks SQL и Databricks Runtime 13.3 и выше.

Примеры

> 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}