Função from_json

Aplica-se a: Marque Sim Databricks SQL Marque Sim Databricks Runtime

Retorna um valor struct com o jsonStr e schema.

Sintaxe

from_json(jsonStr, schema [, options])

Argumentos

  • jsonStr: Uma expressão STRING especificando um documento json.
  • schema: Uma expressão STRING ou invocação de schema_of_json função.
  • options: Um opcional MAP<STRING,STRING> literal 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, como usados, por exemplo CREATE TABLE, em . Antes do Databricks, o Runtime 12.2 schema deve ser um literal.

options, se fornecido, pode ser qualquer 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 vírgula flutuante como um tipo decimal. Se os valores não se encaixam em decimais, então infere-os como duplos.
  • allowComments (padrão false): ignora comentários no estilo Java e C++ em registros JSON.
  • allowUnquotedFieldNames (padrão false): permite nomes de campos JSON não citados.
  • 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 a citação de todos os caracteres usando o mecanismo de cotação invertida.
  • allowUnquotedControlChars (padrão false): 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ão PERMISSIVE): 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 por columnNameOfCorruptRecord, e define campos malformados como nulos. Para manter registros corrompidos, você pode definir um campo de tipo de cadeia de caracteres nomeado columnNameOfCorruptRecord 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 um columnNameOfCorruptRecord campo em um esquema de saída.
    • FAILFAST: lança uma exceção quando atende a registros corrompidos.
  • columnNameOfCorruptRecord (padrão é o valor especificado em spark.sql.columnNameOfCorruptRecord): permite renomear o novo campo com string malformada criada pelo PERMISSIVE modo. Isso substitui o 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 nos padrões Datetime. Isto aplica-se 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 nos padrões 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, 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 e multiLine estiver definida como true, 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ão false): 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ão true): 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 e Infinity.
    • -INF para infinito negativo), alias -Infinity.
    • NaN para outros números não-A, como resultado da divisão por zero.
  • readerCaseSensitive (padrão true): especifica o comportamento de diferenciação de maiúsculas e minúsculas quando rescuedDataColumn 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');
 {1,0.8}

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