Dela via


Funktionen from_json

Gäller för: markerad ja Databricks SQL markerad ja Databricks Runtime

Returnerar ett struct-värde med jsonStr och schema.

Syntax

from_json(jsonStr, schema [, options])

Argument

  • jsonStr: Ett STRING uttryck som anger ett json-dokument.
  • schema: Ett STRING uttryck eller anrop av schema_of_json funktion.
  • options: En valfri MAP<STRING,STRING> literal som anger direktiv.

jsonStr bör vara välformulerad med avseende på schema och options.

schema måste definieras som kommaavgränsade kolumnnamn och datatyppar, liknande det format som används i CREATE TABLE. Innan Databricks Runtime 12.2 schema måste vara en literal.

Kommentar

Kolumn- och fältnamnen i schema är skiftlägeskänsliga och måste matcha namnen exakt jsonStr . Om du vill mappa JSON-fält som endast skiljer sig åt i fall kan du omvandla den resulterande structen till distinkta fältnamn. Mer information finns i Exempel .

options, om detta anges, kan vara något av följande:

  • primitivesAsString (standard false): härleder alla primitiva värden som en strängtyp.
  • prefersDecimal (standard false): härleder alla flyttalsvärden som en decimaltyp. Om värdena inte får plats i decimaltecken, så härleds de som dubblar.
  • allowComments (standard false): ignorerar Java- och C++-formatkommentarer i JSON-poster.
  • allowUnquotedFieldNames (standard false): tillåter ociterade JSON-fältnamn.
  • allowSingleQuotes (standard true): tillåter enkla citattecken utöver dubbla citattecken.
  • allowNumericLeadingZeros (standard false): tillåter inledande nollor i tal (till exempel 00012).
  • allowBackslashEscapingAnyCharacter (standard false): tillåter att citat av alla tecken accepteras med hjälp av mekanismen för omvänt snedstreck.
  • allowUnquotedControlChars (standard false): tillåter att JSON-strängar innehåller ociterade kontrolltecken (ASCII-tecken med ett värde som är mindre än 32, inklusive flik- och radmatningstecken) eller inte.
  • mode (standard PERMISSIVE): tillåter ett läge för att hantera skadade poster under parsning.
    • PERMISSIVE: När den möter en skadad post placerar du den felaktigt formulerade strängen i ett fält som konfigurerats av columnNameOfCorruptRecordoch anger felaktiga fält till null. Om du vill behålla skadade poster kan du ange ett strängtypsfält med namnet columnNameOfCorruptRecord i ett användardefinierat schema. Om ett schema inte har fältet släpps skadade poster under parsningen. När du härleder ett schema lägger det implicit till ett columnNameOfCorruptRecord fält i ett utdataschema.
    • FAILFAST: utlöser ett undantag när det möter skadade poster.
  • columnNameOfCorruptRecord (standardvärdet är det värde som anges i spark.sql.columnNameOfCorruptRecord): tillåter att det nya fältet byts namn med en felaktig sträng som skapats av PERMISSIVE läget. Detta åsidosätter spark.sql.columnNameOfCorruptRecord.
  • dateFormat (standard yyyy-MM-dd): anger strängen som anger ett datumformat. Anpassade datumformat följer formaten i Datetime-mönster. Detta gäller för datumtyp.
  • timestampFormat (standard yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): anger strängen som anger ett tidsstämpelformat. Anpassade datumformat följer formaten i Datetime-mönster. Detta gäller för tidsstämpeltypen.
  • multiLine (standard false): parsar en post, som kan sträcka sig över flera rader, per fil.
  • encoding (som standard är den inte inställd): tillåter att du med tvådällning anger en standardmässig grundläggande eller utökad kodning för JSON-filerna. Till exempel UTF-16BE, UTF-32LE. Om kodningen inte har angetts och multiLine är inställd på trueidentifieras den automatiskt.
  • lineSep (standardvärdet omfattar alla \r, \r\n och \n): definierar den radavgränsare som ska användas för parsning.
  • samplingRatio (standard 1.0): definierar bråk av indata-JSON-objekt som används för schemainferering.
  • dropFieldIfAllNull (standard false): om du vill ignorera kolumnen med alla null-värden eller tom matris/struct under schemainferens.
  • locale (standard är en-US): sets en språktagg i IETF BCP 47-format. Detta används till exempel vid parsning av datum och tidsstämplar.
  • allowNonNumericNumbers (standard true): tillåter JSON-parser att identifiera en uppsättning token som inte är ett tal (NaN) som lagliga flytande talvärden:
    • +INF för positiv oändlighet, samt alias för +Infinity och Infinity.
    • -INF för negativ oändlighet), alias -Infinity.
    • NaN för andra icke-a-tal, t.ex. resultat av division med noll.
  • readerCaseSensitive (standard true): anger beteendet för skiftlägeskänslighet när rescuedDataColumn är aktiverat. Om det är sant kan du rädda de datakolumner vars namn skiljer sig från schemat. Annars läser du data på ett skiftlägesokänsligt sätt. Finns i Databricks SQL och Databricks Runtime 13.3 LTS och senare.

Returer

En struct med fältnamn och typer som matchar schemadefinitionen.

Exempel

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