Функция 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
должен быть литералом.
Параметр 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');
{1,0.8}
> SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{2015-08-26 00:00:00}