Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Databricks SQL
Databricks Runtime
Retorna um valor struct com o jsonStr e schema.
Sintaxe
from_json(jsonStr, schema [, options])
Argumentos
-
jsonStr: UmaSTRINGexpressão que especifica um documento json. -
schema: UmaSTRINGexpressão ou invocação deschema_of_jsonfunção. -
options: Um literal opcionalMAP<STRING,STRING>que especifica diretivas.
jsonStr deverá estar bem formado no que diz respeito a schema e options.
Os schema devem ser definidos como nomes de colunas separados por vírgulas e pares de tipos de dados, semelhante ao formato usado em CREATE TABLE. Antes da Databricks Runtime 12.2, schema deve ser um literal.
Como alternativa, pode-se usar from_json com Lakeflow Spark Declarative Pipelines para inferir e evoluir automaticamente o esquema, ao definir schema para NULL e especificar schemaLocationKey. Para obter exemplos, consulte Como inferir e evoluir o esquema usando from_json em pipelines.
Nota
Os nomes das colunas e dos campos em schema são sensíveis a maiúsculas e minúsculas e devem corresponder exatamente aos nomes em jsonStr.
Para mapear campos JSON que diferem apenas em maiúsculas e minúsculas, você pode converter a struct resultante para nomes de campo distintos.
Consulte Exemplos para obter mais detalhes.
options, se fornecido, pode ser qualquer 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 vírgula flutuante como um tipo decimal. Se os valores não se encaixam em decimais, então infere-os como duplos. -
allowComments(padrãofalse): ignora comentários no estilo Java e C++ em registros JSON. -
allowUnquotedFieldNames(padrãofalse): permite nomes de campos JSON não citados. -
allowSingleQuotes(padrãotrue): permite aspas simples, além de aspas duplas. -
allowNumericLeadingZeros(predefiniçãofalse): permite zeros à esquerda em números (por exemplo,00012). -
allowBackslashEscapingAnyCharacter(padrãofalse): permite aceitar a citação de todos os caracteres usando o mecanismo de barra invertida. -
allowUnquotedControlChars(padrãofalse): permite que Strings JSON contenham caracteres de controle sem aspas (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 atende a um registro corrompido, coloca a cadeia de caracteres malformada em um campo configurado porcolumnNameOfCorruptRecord, e define campos malformados como nulos. Para manter registros corrompidos, você pode definir um campo de tipo de cadeia de caracteres nomeadocolumnNameOfCorruptRecordem um esquema definido pelo usuário. Se um esquema não tiver o campo, ele descartará registros corrompidos durante a análise. Ao inferir um esquema, ele adiciona implicitamente umcolumnNameOfCorruptRecordcampo em um esquema de saída. -
FAILFAST: lança uma exceção quando encontra registos corrompidos.
-
-
columnNameOfCorruptRecord(padrão é o valor especificado emspark.sql.columnNameOfCorruptRecord): permite renomear o novo campo com a string malformada criada pelo modoPERMISSIVE. Isso substitui ospark.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 Datetime patterns. Isto aplica-se ao tipo de data. -
timestampFormat(padrãoyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): define a cadeia de caracteres que indica um formato de carimbo de data/hora. Os formatos de data personalizados seguem os formatos dos Datetime patterns. Isso aplica-se ao tipo de timestamp. -
multiLine(padrãofalse): analisa um registro, que pode abranger várias linhas, por arquivo. -
encoding(por padrão, não está definido): permite definir à força uma das codificações básicas ou estendidas padrão para os arquivos JSON. Por exemplo, UTF-16BE, UTF-32LE. Se a codificação não for especificada emultiLineestiver definida comotrue, ela será detetada automaticamente. -
lineSep(padrão abrange todos os\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 de objetos JSON de entrada usados para inferir esquema. -
dropFieldIfAllNull(padrãofalse): se deve ignorar a coluna de todos os valores nulos ou a matriz/estrutura vazia durante a inferência do esquema. -
locale(o padrão éen-US):setsuma localidade como etiqueta de idioma no formato IETF BCP 47. Por exemplo, isso é usado ao analisar datas e timestamps. -
allowNonNumericNumbers(padrãotrue): permite que o analisador JSON reconheça o conjunto de tokens não-a-número (NaN) como valores de número flutuante legal:-
+INFpara o infinito positivo, bem como alias de+InfinityeInfinity. -
-INFpara infinito negativo), alias-Infinity. -
NaNpara outros não-números, como resultado da divisão por zero.
-
-
readerCaseSensitive(padrãotrue): especifica o comportamento de sensibilidade a maiúsculas e minúsculas quandorescuedDataColumnestá habilitado. Se verdadeiro, recupere as colunas de dados cujos nomes diferem por caso do esquema; caso contrário, leia os dados de uma forma que não diferencie entre maiúsculas e minúsculas. Disponível em Databricks SQL e Databricks Runtime 13.3 LTS e superior.
Devoluções
Uma estrutura com nomes de campo e tipos correspondentes à definição de 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}