Compartilhar via


Função from_json

Aplica-se a: marca de seleção positiva SQL do Databricks marca de seleção positiva Runtime do Databricks

Retorna um valor de struct com jsonStr e schema.

Sintaxe

from_json(jsonStr, schema [, options])

Argumentos

  • jsonStr: Uma STRING expressão que especifica um documento json.
  • schema: Uma STRING expressão ou invocação de schema_of_json função.
  • options: uma MAP<STRING,STRING> literal opcional especificando diretivas.

jsonStr deve ser bem formado com relação a schema e options.

schema devem ser definidos como nomes de coluna separados por vírgulas e pares de tipos de dados, semelhantes ao formato usado no CREATE TABLE. Antes do Databricks Runtime 12.2 schema, deve ser um literal.

Observação

Os nomes de coluna e campo diferenciam schema maiúsculas de minúsculas e devem corresponder exatamente aos nomes jsonStr . Para mapear campos JSON que diferem apenas em maiúsculas e minúsculas, você pode converter a estrutura resultante em nomes de campo distintos. Consulte Exemplos para obter mais detalhes.

options, se fornecido, pode ser um dos seguintes:

  • primitivesAsString (padrão false): infere todos os valores primitivos como um tipo de cadeia de caracteres.
  • prefersDecimal (padrão false): 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ão false): ignora o comentário de estilo Java e C++ em registros JSON.
  • allowUnquotedFieldNames (padrão false): permite nomes de campos JSON sem aspas.
  • allowSingleQuotes (padrão true): permite aspas simples além de aspas duplas.
  • allowNumericLeadingZeros (padrão false): permite zeros à esquerda em números (por exemplo, 00012).
  • allowBackslashEscapingAnyCharacter (padrão false): permite aceitar aspas de todos os caracteres usando o mecanismo de aspas de barra invertida.
  • allowUnquotedControlChars (padrão false): permite que as cadeias de caracteres JSON contenham caracteres de controle sem aspas (caracteres ASCII com um valor inferior a 32, incluindo caracteres de tabulação e de feed de linha) ou não.
  • mode (padrão PERMISSIVE): 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 por columnNameOfCorruptRecord e define os campos malformados como nulos. Para manter os registros corrompidos, você pode definir um campo de tipo de cadeia de caracteres chamado columnNameOfCorruptRecord em 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 campo columnNameOfCorruptRecord a um esquema de saída.
    • FAILFAST: gera uma exceção quando encontra registros corrompidos.
  • columnNameOfCorruptRecord (o padrão é o valor especificado em spark.sql.columnNameOfCorruptRecord): permite renomear o novo campo que tem uma cadeia de caracteres malformada criada pelo modo PERMISSIVE. Isso substitui spark.sql.columnNameOfCorruptRecord.
  • dateFormat (padrão yyyy-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ão yyyy-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 padrões de datetime. Isso se aplica ao tipo de carimbo de data/hora.
  • multiLine (padrão false): 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 e multiLine for definida como true, ela será detectada automaticamente.
  • lineSep (o padrão abrange todos: \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 dos objetos JSON de entrada usados para inferir o esquema.
  • dropFieldIfAllNull (padrão false): indica se a coluna de todos os valores nulos ou matriz/struct vazio deve ser ignorada durante a inferência de esquema.
  • locale (padrão é en-US): sets uma localidade como uma marca de idioma no formato IETF BCP 47. Por exemplo, isso é usado durante a análise de datas e de carimbos de data/hora.
  • allowNonNumericNumbers (padrão true): permite que o analisador JSON reconheça o conjunto de tokens não numéricos (NaN) como valores numéricos flutuantes válidos:
    • +INF para infinito positivo, bem como o alias de +Infinity e Infinity.
    • -INF para infinito negativo, alias -Infinity.
    • NaN para outros itens não numéricos, como o resultado da divisão por zero.
  • readerCaseSensitive (padrão true): especifica o comportamento de confidencialidade de maiúsculas e minúsculas quando rescuedDataColumn é habilitado. Se for verdadeiro, salve as colunas de dados cujos nomes diferem por caso do esquema; caso contrário, leia os dados de maneira que não diferencia 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 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}