Funzione from_json

Si applica a:check marked yes Databricks SQL check marked yes Databricks Runtime

Restituisce un valore di struct con jsonStr e schema.

Sintassi

from_json(jsonStr, schema [, options])

Argomenti

  • jsonStr: espressione STRING che specifica un documento JSON.
  • schema: espressione STRING o chiamata di schema_of_json funzione.
  • options: valore letterale MAP<STRING facoltativo che> specifica le direttive.

Prima di Databricks Runtime 12.2 schema deve essere un valore letterale.

Valori restituiti

Struct con nomi di campo e tipi corrispondenti alla definizione dello schema.

jsonStr deve essere ben formato rispetto a schema e options. schema deve essere definito come coppie nome colonna delimitato da virgole e tipo di dati come usato in, ad esempio CREATE TABLE.

options, se specificato, può essere uno dei seguenti:

  • primitivesAsString (impostazione predefinita false): deduce tutti i valori primitivi come tipo stringa.
  • prefersDecimal (impostazione predefinita false): deduce tutti i valori a virgola mobile come tipo decimale. Se i valori non rientrano nel separatore decimale, li deduce come double.
  • allowComments (impostazione predefinita false): ignora il commento di stile Java e C++ nei record JSON.
  • allowUnquotedFieldNames (impostazione predefinita false): consente nomi di campo JSON senza virgo chiave.
  • allowSingleQuotes (impostazione predefinita true): consente virgolette singole oltre alle virgolette doppie.
  • allowNumericLeadingZeros (impostazione predefinita false): consente zeri iniziali in numeri (ad esempio, 00012).
  • allowBackslashEscapingAnyCharacter (impostazione predefinita false): consente l'accettazione di virgolette di tutti i caratteri usando il meccanismo di virgolette rovesciata.
  • allowUnquotedControlChars (impostazione predefinita false): consente alle stringhe JSON di contenere caratteri di controllo non racchiusi tra virgolette (caratteri ASCII con valore minore di 32, inclusi caratteri di tabulazioni e avanzamento riga) o meno.
  • mode (impostazione predefinita PERMISSIVE): consente una modalità per gestire i record danneggiati durante l'analisi.
    • PERMISSIVE: quando soddisfa un record danneggiato, inserisce la stringa in formato non valido in un campo configurato da columnNameOfCorruptRecorde imposta i campi in formato non valido su Null. Per mantenere i record danneggiati, è possibile impostare un campo di tipo stringa denominato columnNameOfCorruptRecord in uno schema definito dall'utente. Se uno schema non dispone del campo, elimina i record danneggiati durante l'analisi. Quando si deduce uno schema, aggiunge in modo implicito un columnNameOfCorruptRecord campo in uno schema di output.
    • FAILFAST: genera un'eccezione quando soddisfa i record danneggiati.
  • columnNameOfCorruptRecord (il valore predefinito è il valore specificato in spark.sql.columnNameOfCorruptRecord): consente di rinominare il nuovo campo con una stringa in formato non valido creata dalla PERMISSIVE modalità . In questo modo viene eseguito l'override di spark.sql.columnNameOfCorruptRecord.
  • dateFormat (impostazione predefinita yyyy-MM-dd): imposta la stringa che indica un formato di data. I formati di data personalizzati seguono i formati in base ai modelli Datetime. Questo vale per il tipo di data.
  • timestampFormat (impostazione predefinita yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): imposta la stringa che indica un formato timestamp. I formati di data personalizzati seguono i formati in base ai modelli Datetime. Questo vale per il tipo di timestamp.
  • multiLine (impostazione predefinita false): analizza un record, che può estendersi su più righe, per ogni file.
  • encoding (per impostazione predefinita non è impostata): consente di impostare forzatamente una codifica standard di base o estesa per i file JSON. Ad esempio UTF-16BE, UTF-32LE. Se la codifica non è specificata e multiLine è impostata su true, viene rilevata automaticamente.
  • lineSep (il valore predefinito riguarda tutti gli \roggetti e \r\n\n): definisce il separatore di riga da usare per l'analisi.
  • samplingRatio (impostazione predefinita 1.0): definisce la frazione di oggetti JSON di input usati per l'inferenza dello schema.
  • dropFieldIfAllNull (impostazione predefinita false): se ignorare la colonna di tutti i valori Null o una matrice/struct vuota durante l'inferenza dello schema.
  • locale (il valore predefinito è en-US): sets impostazioni locali come tag di lingua in formato IETF BCP 47. Ad esempio, questo viene usato durante l'analisi di date e timestamp.
  • allowNonNumericNumbers (impostazione predefinita true): consente al parser JSON di riconoscere il set di token non numerici (NaN) come valori numerici mobili legali:
    • +INF per l'infinito positivo, nonché l'alias di +Infinity e Infinity.
    • -INF per infinito negativo), alias -Infinity.
    • NaN per altri numeri non numerici, ad esempio il risultato della divisione per zero.
  • readerCaseSensitive (impostazione predefinita true): specifica il comportamento di distinzione tra maiuscole e minuscole quando rescuedDataColumn è abilitato. Se true, salvare le colonne di dati i cui nomi differiscono per maiuscole e minuscole rispetto allo schema; in caso contrario, leggere i dati senza distinzione tra maiuscole e minuscole. Disponibile in Databricks SQL e Databricks Runtime 13.3 e versioni successive.

Esempi

> 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}