from_json
-functie
Van toepassing op: Databricks SQL Databricks Runtime
Retourneert een struct-waarde met de jsonStr
en schema
.
Syntaxis
from_json(jsonStr, schema [, options])
Argumenten
-
jsonStr
: EenSTRING
expressie die een json-document opgeeft. -
schema
: EenSTRING
expressie of aanroep van schema_of_json functie. -
options
: Een optionele letterlijkeMAP<STRING,STRING>
waarde die instructies aangeeft.
jsonStr
moet goed worden gevormd met betrekking tot schema
en options
.
schema
moet worden gedefinieerd als door komma's gescheiden column namen en gegevenstypeparen, vergelijkbaar met de indeling die wordt gebruikt in CREATE TABLE
.
Vóór Databricks Runtime 12.2 schema
moet een letterlijke naam zijn.
Notitie
De column en veldnamen in schema
zijn hoofdlettergevoelig en moeten exact overeenkomen met de namen in jsonStr
.
Als u JSON-velden wilt toewijzen die alleen verschillen in het geval, kunt u de resulterende struct naar afzonderlijke veldnamen casten .
Zie Voorbeelden voor meer informatie.
options
, indien opgegeven, kan een van de volgende zijn:
-
primitivesAsString
(standaardfalse
): leidt alle primitieve values af als stringtype. -
prefersDecimal
(standaardfalse
): geeft alle drijvendekomma-values af als een decimaal type. Als de values niet in een decimaal getal passen, worden ze afgeleid als dubbele waarden. -
allowComments
(standaardfalse
): negeert opmerking in Java- en C++-stijl in JSON-records. -
allowUnquotedFieldNames
(standaardfalse
): staat niet-vermelde JSON-veldnamen toe. -
allowSingleQuotes
(standaardtrue
): staat enkele aanhalingstekens toe naast dubbele aanhalingstekens. -
allowNumericLeadingZeros
(standaardfalse
): staat voorloopnullen toe in getallen (bijvoorbeeld00012
). -
allowBackslashEscapingAnyCharacter
(standaardfalse
): staat het accepteren van het quoteren van alle tekens toe met behulp van het backslash-quotingmechanisme. -
allowUnquotedControlChars
(standaardfalse
): staat JSON-tekenreeksen toe om niet-aanhalingstekens te bevatten (ASCII-tekens met een waarde kleiner dan 32, inclusief tab- en regelinvoertekens) of niet. -
mode
(standaardPERMISSIVE
): staat een modus toe voor het verwerken van beschadigde records tijdens het parseren.-
PERMISSIVE
: wanneer deze voldoet aan een beschadigde record, plaatst u de ongeldige tekenreeks in een veld dat is geconfigureerd doorcolumnNameOfCorruptRecord
en stelt u ongeldige velden in op null. Als u beschadigde records wilt behouden, kunt u een tekenreekstypeveld met de naamcolumnNameOfCorruptRecord
set in een door de gebruiker gedefinieerde schema. Als een schema het veld niet heeft, verwijdert het beschadigde records tijdens het parseren. Bij het afleiden van een schemawordt er impliciet eencolumnNameOfCorruptRecord
-veld aan de uitvoer schematoegevoegd. -
FAILFAST
: genereert een uitzondering wanneer deze voldoet aan beschadigde records.
-
-
columnNameOfCorruptRecord
(standaard is de waarde die is opgegeven inspark.sql.columnNameOfCorruptRecord
): staat het wijzigen van de naam van het nieuwe veld toe having ongeldige tekenreeks die is gemaakt doorPERMISSIVE
modus. Dit overschrijftspark.sql.columnNameOfCorruptRecord
. -
dateFormat
(standaardyyyy-MM-dd
): stelt de tekenreeks in die een datumnotatie aangeeft. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het datumtype. -
timestampFormat
(standaardyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): stelt de tekenreeks in die een tijdstempelnotatie aangeeft. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het type tijdstempel. -
multiLine
(standaardfalse
): parseert één record, die meerdere regels per bestand kan omvatten. -
encoding
(standaard is dit niet set): staat toe om geforceerd set een van de standaard basis- of uitgebreide codering voor de JSON-bestanden. Bijvoorbeeld UTF-16BE, UTF-32LE. Als de codering niet is opgegeven enmultiLine
van set naartrue
is, wordt deze automatisch gedetecteerd. -
lineSep
(standaard dekt alle\r
en\r\n
\n
): definieert het regelscheidingsteken dat moet worden gebruikt voor parseren. -
samplingRatio
(standaard 1.0): definieert de fractie van de JSON-invoerobjecten die worden gebruikt voor schema afleiden. -
dropFieldIfAllNull
(standaardfalse
): of u column van alle null-values of lege matrix/struct tijdens schema deductie wilt negeren. -
locale
(standaard isen-US
):sets
een landinstelling als taaltag in IETF BCP 47-indeling. Dit wordt bijvoorbeeld gebruikt tijdens het parseren van datums en tijdstempels. -
allowNonNumericNumbers
(standaardtrue
): staat JSON-parser toe om set tokens zonder getal (NaN
) te herkennen als juridisch zwevend getal values:-
+INF
voor positieve oneindigheid, evenals alias van+Infinity
enInfinity
. -
-INF
voor negatief oneindigheid), alias-Infinity
. -
NaN
voor andere not-a-numbers, zoals het resultaat van delen door nul.
-
-
readerCaseSensitive
(standaardtrue
): hiermee geeft u het gedrag van hoofdlettergevoeligheid op wanneerrescuedDataColumn
deze is ingeschakeld. Indien waar, redt u de gegevens columns waarvan de namen verschillen per geval van de schema; lees anders de gegevens op een niet-hoofdlettergevoelige manier. Beschikbaar in Databricks SQL en Databricks Runtime 13.3 LTS en hoger.
Retouren
Een struct met veldnamen en -typen die overeenkomen met de schema definitie.
Voorbeelden
> 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}