from_json function (Databricks SQL)

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: valore letterale STRING o chiamata di schema_of_json funzione (Databricks SQL).
  • options: valore letterale MAP STRING,STRING> facoltativo<che specifica le direttive.

Restituisce

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 valori 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 non racchiusi tra virgoglie.
  • 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 tabulazioni e avanzamento riga) o meno.
  • mode (impostazione predefinita PERMISSIVE): consente di 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 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 ha il 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 spark.sql.columnNameOfCorruptRecorddi .
  • dateFormat (impostazione predefinita yyyy-MM-dd): imposta la stringa che indica un formato di data. I formati di data personalizzati seguono i formati in Modelli Datetime (Databricks SQL). 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 di timestamp. I formati di data personalizzati seguono i formati in Modelli Datetime (Databricks SQL). 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 copre tutti gli \roggetti \r\n e \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 la matrice/struct vuota durante l'inferenza dello schema.
  • locale (il valore predefinito è en-US): sets impostazioni locali come tag di lingua nel 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 mobile legali:
    • +INF per infinito positivo, nonché 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.

Esempio

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