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


Функция from_json

Область применения:флажок Databricks SQL флажок Databricks Runtime

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

Синтаксис

from_json(jsonStr, schema [, options])

Аргументы

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

Параметр jsonStr должен иметь правильный формат в отношении schema и options.

schema необходимо определить как имена столбцов с разделиемыми запятыми и пары типов данных, аналогичные формату, используемому в CREATE TABLE. До Databricks Runtime 12.2 schema должен быть литералом.

Примечание.

Имена столбцов и полей в schema учитывает регистр и должны точно соответствовать именам в jsonStr. Чтобы сопоставить поля JSON, которые отличаются только в случае, можно привести результирующий структуру к разным именам полей. Дополнительные сведения см . в примерах .

Параметр 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 LTS и более поздних версиях.

Возвраты

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

Примеры

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

-- The column name must to match the case of the JSON field
> SELECT from_json('{"a":1}', 'A INT');
{"A":null}

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

-- Disambiguate field names with different cases
> SELECT cast(from_json('{"a":1, "A":0.8}', 'a INT, A DOUBLE') AS STRUCT<a: INT, b: DOUBLE>);
 {"a":1, "b":0.8}