Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Функция
Область применения:
Databricks SQL
Databricks Runtime
Возвращает значение структуры с использованием jsonStr и schema.
Синтаксис
from_json(jsonStr, schema [, options])
Аргументы
-
jsonStrSTRING: выражение, указывающее документ JSON. -
schemaSTRING: выражение или вызовschema_of_jsonфункции. -
options: необязательныйMAP<STRING,STRING>литерал, указывающий директивы.
Параметр jsonStr должен иметь правильный формат в отношении schema и options.
Необходимо schema определить как имена столбцов с разделиемыми запятыми и пары типов данных, аналогичные формату, используемому в CREATE TABLE. До версии Databricks Runtime 12.2 schema должен быть литералом.
Кроме того, вы можете использовать from_json с декларативными конвейерами Lakeflow Spark для автоматического вывода и развития схемы, установив schema на NULL и указав schemaLocationKey. См. примеры в разделе Интерпретация и эволюция схемы с использованием from_json в конвейерах.
Примечание.
Имена столбцов и полей в 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): задает строку, которая указывает формат даты. В пользовательских форматах даты применяются форматы шаблонов даты и времени. Это относится к типу данных "дата". -
timestampFormat(по умолчаниюyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): задает строку, которая обозначает формат метки времени. В пользовательских форматах даты применяются форматы шаблонов даты и времени. Это относится к типу метки времени. -
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}