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 expressão de STRING que especifica um documento json.
  • schema: uma expressão STRING ou invocação de função schema_of_json.
  • options: um literal de MAP<STRING,STRING> opcional que especifica diretivas.

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

schema precisa ser definido como pares de tipo de dados e nome de coluna separados por vírgula, como usado, por exemplo, em CREATE TABLE. Antes do Databricks Runtime 12.2 schema, deve ser um literal.

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');
 {1,0.8}

> SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 {2015-08-26 00:00:00}