Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Funktionen
Gäller för:
Databricks SQL
Databricks Runtime
Returnerar ett struct-värde med jsonStr och schema.
Syntax
from_json(jsonStr, schema [, options])
Argument
-
jsonStr: EttSTRINGuttryck som anger ett json-dokument. -
schema: EttSTRINGuttryck eller anrop avschema_of_jsonfunktionen. -
options: En valfriMAP<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(standardfalse): härleder alla primitiva värden som en strängtyp. -
prefersDecimal(standardfalse): 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örvalfalse): ignorerar Java- och C++-stilkommentarer i JSON-objekt. -
allowUnquotedFieldNames(standardfalse): tillåter ociterade JSON-fältnamn. -
allowSingleQuotes(standardtrue): tillåter enkla citattecken utöver dubbla citattecken. -
allowNumericLeadingZeros(standardfalse): tillåter inledande nollor i tal (till exempel00012). -
allowBackslashEscapingAnyCharacter(standardfalse): tillåter att citat av alla tecken accepteras med hjälp av mekanismen för omvänt snedstreck. -
allowUnquotedControlChars(standardfalse): 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(standardPERMISSIVE): 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 avcolumnNameOfCorruptRecordoch sätter felaktiga fält till null. Om du vill behålla skadade poster kan du ange ett strängtypsfält med namnetcolumnNameOfCorruptRecordi 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 ettcolumnNameOfCorruptRecordfä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 ispark.sql.columnNameOfCorruptRecord): tillåter att byta namn på det nya fältet med en felaktigt formaterad sträng som skapats avPERMISSIVE-läge. Detta åsidosätterspark.sql.columnNameOfCorruptRecord. -
dateFormat(standardyyyy-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(standardyyyy-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(standardfalse): 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 ochmultiLinehar angetts tilltrueidentifieras den automatiskt. -
lineSep(standardvärdet omfattar alla\r,\r\noch\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(standardfalse): om du vill ignorera kolumnen med alla null-värden eller tom matris/struct under schemainferens. -
locale(standard ären-US):setsen lokal inställning som språktagg i IETF BCP 47-format. Detta används till exempel vid parsning av datum och tidsstämplar. -
allowNonNumericNumbers(standardtrue): tillåter JSON-parser att identifiera en uppsättning token som inte är ett tal (NaN) som lagliga flytande talvärden:-
+INFför positiv oändlighet, samt alias för+InfinityochInfinity. -
-INFför negativ oändlighet), alias-Infinity. -
NaNför andra icke-a-tal, t.ex. resultat av division med noll.
-
-
readerCaseSensitive(standardinställningtrue): anger skiftlägeskänslighetsbeteendet närrescuedDataColumnä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}