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