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 funktionen.
  • options: En valfri MAP<STRING,STRING> literal som specificerar 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 ett fast värde.

Du kan också använda from_json med Lakeflows deklarativa pipelines för att automatiskt härleda och utveckla schemat genom att ställa in schema till NULL och specificera en schemaLocationKey. Exempel finns i Härled och utveckla schemat med from_json Lakeflow Deklarativa Pipelines.

Kommentar

Kolumn- och fältnamnen i schema är skiftlägeskänsliga och måste matcha namnen i jsonStr exakt. 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 (förval false): ignorerar Java- och C++-stilkommentarer i JSON-objekt.
  • 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 placeras den felaktigt formulerade strängen i ett fält som konfigurerats av columnNameOfCorruptRecord och sätter 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äpper det skadade poster under tolkningen. 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 stöter på skadade poster.
  • columnNameOfCorruptRecord (standardvärdet är det värde som anges i spark.sql.columnNameOfCorruptRecord): tillåter att byta namn på det nya fältet med en felaktigt formaterad sträng som skapats av PERMISSIVE-läge. 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 postering per fil, som kan sträcka sig över flera rader.
  • encoding (som standard är det inte inställt): tillåter att du tvingande ställer in en av de standardmässiga grundläggande eller utökade kodningarna för JSON-filerna. Till exempel UTF-16BE, UTF-32LE. Om kodningen inte har angetts och multiLine har angetts till 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 fraktion 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 lokal inställning som 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 (standardinställning true): anger skiftlägeskänslighetsbeteendet 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}