Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Função
Aplica-se a:
Databricks SQL
Databricks Runtime
Retorna um valor de struct com jsonStr e schema.
Sintaxe
from_json(jsonStr, schema [, options])
Argumentos
-
jsonStr: UmaSTRINGexpressão que especifica um documento json. -
schema: uma expressãoSTRINGou invocação da funçãoschema_of_json. -
options: um literalMAP<STRING,STRING>opcional que especifica diretivas.
jsonStr deve ser bem formado com relação a schema e options.
Deve schema ser definido como nomes de coluna separados por vírgulas e pares de tipo de dados, semelhante ao formato usado em CREATE TABLE. Antes do Databricks Runtime 12.2, schema deve ser literal.
Como alternativa, você pode usar from_json com o Lakeflow Spark Declarative Pipelines para inferir e evoluir automaticamente o esquema definindo schema como NULL e especificando um schemaLocationKey. Para obter exemplos, consulte Infer e evolua o esquema usando from_json em pipelines.
Observação
Os nomes de colunas e campos entre schema diferenciam maiúsculas de minúsculas e devem corresponder exatamente aos nomes entre jsonStr.
Para mapear campos JSON que diferem apenas em maiúsculas e minúsculas, você pode converter a estrutura resultante para nomes de campos distintos.
Consulte Exemplos para obter mais detalhes.
options, se fornecido, pode ser um dos seguintes:
-
primitivesAsString(padrãofalse): infere todos os valores primitivos como um tipo de cadeia de caracteres. -
prefersDecimal(padrãofalse): infere todos os valores de ponto flutuante como um tipo decimal. Se os valores não couberem em decimal, ele vai inferi-los como duplos. -
allowComments(padrãofalse): ignora comentários no estilo Java e C++ em registros JSON. -
allowUnquotedFieldNames(padrãofalse): permite nomes de campos JSON sem aspas. -
allowSingleQuotes(padrãotrue): permite aspas simples além de aspas duplas. -
allowNumericLeadingZeros(padrãofalse): permite zeros à esquerda em números (por exemplo,00012). -
allowBackslashEscapingAnyCharacter(padrãofalse): permite aceitar aspas de todos os caracteres usando o mecanismo de aspas com barra invertida. -
allowUnquotedControlChars(padrãofalse): permite que cadeias de caracteres JSON contenham caracteres de controle não cotados (caracteres ASCII com valor inferior a 32, incluindo caracteres de tabulação e alimentação de linha) ou não. -
mode(padrãoPERMISSIVE): permite um modo para lidar com registros corrompidos durante a análise.-
PERMISSIVE: quando ele encontra um registro corrompido, coloca a cadeia de caracteres malformada em um campo configurado porcolumnNameOfCorruptRecorde define os campos malformados como nulos. Para manter os registros corrompidos, você pode definir um campo de tipo de cadeia de caracteres chamadocolumnNameOfCorruptRecordem um esquema definido pelo usuário. Se o esquema não tiver o campo, ele removerá os registros corrompidos durante a análise. Ao inferir um esquema, ele adiciona implicitamente um campocolumnNameOfCorruptRecorda um esquema de saída. -
FAILFAST: gera uma exceção quando encontra registros corrompidos.
-
-
columnNameOfCorruptRecord(o padrão é o valor especificado emspark.sql.columnNameOfCorruptRecord): permite renomear o novo campo que tem uma cadeia de caracteres malformada criada pelo modoPERMISSIVE. Isso substituispark.sql.columnNameOfCorruptRecord. -
dateFormat(padrãoyyyy-MM-dd): define a cadeia de caracteres que indica um formato de data. Os formatos de data personalizados seguem os formatos dos padrões de datetime. Isso se aplica ao tipo de data. -
timestampFormat(padrãoyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): define a cadeia que indica um formato de carimbo de data/hora. Os formatos de data personalizados seguem os formatos dos padrões de datetime. Isso se aplica ao tipo de carimbo de data/hora. -
multiLine(padrãofalse): analisa um registro, que pode abranger várias linhas, por arquivo. -
encoding(por padrão, ele não é definido): permite forçar a definição de uma codificação básica ou estendida padrão para os arquivos JSON. Por exemplo, UTF-16BE, UTF-32LE. Se a codificação não for especificada emultiLinefor definida comotrue, ela será detectada automaticamente. -
lineSep(o padrão abrange todos:\r,\r\ne\n): define o separador de linha que deve ser usado para análise. -
samplingRatio(padrão 1.0): define a fração dos objetos JSON de entrada usados para inferir o esquema. -
dropFieldIfAllNull(padrãofalse): se deve ignorar a coluna com todos os valores nulos ou matrizes/structs vazios durante a inferência de esquema. -
locale(padrão éen-US):setsuma localidade como rótulo de idioma no formato IETF BCP 47. Por exemplo, isso é usado ao analisar datas e registros de data e hora. -
allowNonNumericNumbers(padrãotrue): permite que o analisador JSON reconheça o conjunto de tokens não numéricos (NaN) como valores numéricos flutuantes válidos:-
+INFpara infinito positivo, bem como o alias de+InfinityeInfinity. -
-INFpara infinito negativo, alias-Infinity. -
NaNpara outros itens não numéricos, como o resultado da divisão por zero.
-
-
readerCaseSensitive(padrãotrue): especifica o comportamento de sensibilidade de maiúsculas e minúsculas quandorescuedDataColumné habilitado. Se verdadeiro, resgatar as colunas de dados cujos nomes diferem por caso do esquema; caso contrário, ler os dados sem diferenciar maiúsculas de minúsculas. Disponível em Databricks SQL e Databricks Runtime 13.3 LTS e superior.
Retornos
Uma struct com nomes de campos e tipos que correspondem à definição do esquema.
Exemplos
> 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}