Funktionen from_json
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
: EttSTRING
uttryck som anger ett json-dokument.schema
: EttSTRING
uttryck eller anrop av schema_of_json funktion.options
: En valfriMAP<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
(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
(standardfalse
): ignorerar Java- och C++-formatkommentarer i JSON-poster.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 placerar du den felaktigt formulerade strängen i ett fält som konfigurerats avcolumnNameOfCorruptRecord
och anger felaktiga fält till null. Om du vill behålla skadade poster kan du ange ett strängtypsfält med namnetcolumnNameOfCorruptRecord
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 ettcolumnNameOfCorruptRecord
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 ispark.sql.columnNameOfCorruptRecord
): tillåter att det nya fältet byts namn med en felaktig sträng som skapats avPERMISSIVE
läget. 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 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 ochmultiLine
är inställd påtrue
identifieras 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
(standardfalse
): om du vill ignorera kolumnen med alla null-värden eller tom matris/struct under schemainferens.locale
(standard ären-US
):sets
en 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:+INF
för positiv oändlighet, samt alias för+Infinity
ochInfinity
.-INF
för negativ oändlighet), alias-Infinity
.NaN
för andra icke-a-tal, t.ex. resultat av division med noll.
readerCaseSensitive
(standardtrue
): anger beteendet för skiftlägeskänslighet 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}