Função from_json
Aplica-se a: Databricks SQL
Databricks Runtime
Retorna um valor struct com o jsonStr
e schema
.
Sintaxe
from_json(jsonStr, schema [, options])
Argumentos
-
jsonStr
: UmaSTRING
expressão que especifica um documento json. -
schema
: UmaSTRING
expressão ou invocação de schema_of_json função. -
options
: Um literal opcionalMAP<STRING,STRING>
especificando diretivas.
jsonStr
devem estar bem formados no que diz respeito a schema
e options
.
schema
devem ser definidos como nomes de colunas separados por vírgulas e pares de tipos de dados, semelhantes ao formato usado em CREATE TABLE
.
Antes do Databricks, o Runtime 12.2 schema
deve ser um literal.
Nota
Os nomes das colunas e dos campos diferenciam schema
maiúsculas de minúsculas e devem corresponder exatamente aos jsonStr
nomes.
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
(padrã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 cotação 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 nomeadocolumnNameOfCorruptRecord
em 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 umcolumnNameOfCorruptRecord
campo em um esquema de saída. -
FAILFAST
: lança uma exceção quando atende a registros corrompidos.
-
-
columnNameOfCorruptRecord
(padrão é o valor especificado emspark.sql.columnNameOfCorruptRecord
): permite renomear o novo campo com string malformada criada peloPERMISSIVE
modo. 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 nos padrões Datetime. 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 nos padrões 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, 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 emultiLine
estiver definida comotrue
, ela será detetada automaticamente. -
lineSep
(padrão abrange todos os\r
,\r\n
e\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
):sets
uma localidade como marca de idioma no formato IETF BCP 47. Por exemplo, isso é usado ao analisar datas e carimbos de data/hora. -
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:-
+INF
para o infinito positivo, bem como alias de+Infinity
eInfinity
. -
-INF
para infinito negativo), alias-Infinity
. -
NaN
para outros números não-A, como resultado da divisão por zero.
-
-
readerCaseSensitive
(padrãotrue
): especifica o comportamento de diferenciação de maiúsculas e minúsculas quandorescuedDataColumn
está habilitado. Se verdadeiro, resgate as colunas de dados cujos nomes diferem por caso do esquema; caso contrário, leia os dados de forma que não diferencie maiúsculas de 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}