A from_json
függvény
A következőkre vonatkozik: Databricks SQL Databricks Runtime
Egy szerkezetértéket ad vissza a jsonStr
következővel: és schema
.
Syntax
from_json(jsonStr, schema [, options])
Argumentumok
jsonStr
: JSON-dokumentumot meghatározó KARAKTERLÁNC-kifejezés.schema
: Sztringkifejezés vagy schema_of_json függvény meghívása.options
: Nem kötelező MAP<STRING,SZtringkonstans> , amely irányelveket határoz meg.
jsonStr
kell jól formázott tekintetében schema
és options
.
schema
vesszővel tagolt oszlopnévként és adattípus-párként kell definiálni például CREATE TABLE
. A Databricks Runtime 12.2 schema
előtt literálnak kell lennie.
options
, ha van ilyen, az alábbiak bármelyike lehet:
primitivesAsString
(alapértelmezettfalse
): az összes primitív értéket sztringtípusként jelzi.prefersDecimal
(alapértelmezettfalse
): az összes lebegőpontos értéket decimális típusként jelöli meg. Ha az értékek nem felelnek meg a decimális értékeknek, akkor azokat dupla értékként jelöli meg.allowComments
(alapértelmezettfalse
): figyelmen kívül hagyja a Java és c++ stílusú megjegyzéseket a JSON-rekordokban.allowUnquotedFieldNames
(alapértelmezettfalse
): engedélyezi a nem kvótált JSON-mezőneveket.allowSingleQuotes
(alapértelmezetttrue
): lehetővé teszi az egyszeri idézőjeleket a dupla idézőjelek mellett.allowNumericLeadingZeros
(alapértelmezettfalse
): lehetővé teszi a számok kezdő nulláit (például00012
).allowBackslashEscapingAnyCharacter
(alapértelmezettfalse
): lehetővé teszi az összes karakter idézetének elfogadását fordított perjeles idéző mechanizmus használatával.allowUnquotedControlChars
(alapértelmezettfalse
): lehetővé teszi, hogy a JSON-sztringek nem kvótált vezérlőkaraktereket (32-nél kisebb értékű ASCII-karaktereket, beleértve a tabulátor- és vonalcsatornakaraktereket) tartalmazzanak.mode
(alapértelmezettPERMISSIVE
): lehetővé teszi a sérült rekordok elemzés közbeni kezelését.PERMISSIVE
: ha egy sérült rekordnak felel meg, a hibásan formázott sztringet egy , általcolumnNameOfCorruptRecord
konfigurált mezőbe helyezi, és null értékre állítja a hibásan formázott mezőket. A sérült rekordok megőrzéséhez beállíthat egy felhasználó által definiált sémában elnevezettcolumnNameOfCorruptRecord
sztring típusú mezőt. Ha egy séma nem rendelkezik a mezővel, az elemzés során a sérült rekordokat elveti. Séma következtetése esetén implicit módon hozzáad egy mezőt egycolumnNameOfCorruptRecord
kimeneti sémához.FAILFAST
: kivételt eredményez, ha sérült rekordoknak felel meg.
columnNameOfCorruptRecord
(az alapértelmezett érték a következőbenspark.sql.columnNameOfCorruptRecord
van megadva): lehetővé teszi az új mező átnevezését, amely a mód által létrehozott hibás sztringgelPERMISSIVE
rendelkezik. Ez a felülbírálásokspark.sql.columnNameOfCorruptRecord
.dateFormat
(alapértelmezettyyyy-MM-dd
): beállítja a dátumformátumot jelző sztringet. Az egyéni dátumformátumok a Datetime-minták formátumait követik. Ez a dátumtípusra vonatkozik.timestampFormat
(alapértelmezettyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): beállítja az időbélyeg formátumát jelző sztringet. Az egyéni dátumformátumok a Datetime-minták formátumait követik. Ez az időbélyeg típusára vonatkozik.multiLine
(alapértelmezettfalse
): fájlonként egy rekordot elemez, amely több sorra is kiterjedhet.encoding
(alapértelmezés szerint nincs beállítva): lehetővé teszi a JSON-fájlok egyik szabványos alapszintű vagy kiterjesztett kódolásának kényszerített beállítását. Például UTF-16BE, UTF-32LE. Ha a kódolás nincs megadva, ésmultiLine
be van állítvatrue
, a rendszer automatikusan észleli.lineSep
(alapértelmezés szerint az összesre\r
vonatkozik,\r\n
és\n
): az elemzéshez használandó sorelválasztót határozza meg.samplingRatio
(alapértelmezett 1.0): a sémakövetéshez használt bemeneti JSON-objektumok töredékét határozza meg.dropFieldIfAllNull
(alapértelmezettfalse
): figyelmen kívül hagyja-e az összes null értékű oszlopot vagy üres tömböt/szerkezetet a sémakövetkeztetés során.locale
(alapértelmezés szerinten-US
):sets
nyelvi címkeként területi beállítás IETF BCP 47 formátumban. Ez például a dátumok és időbélyegek elemzésekor használatos.allowNonNumericNumbers
(alapértelmezetttrue
): lehetővé teszi, hogy a JSON-elemző a nem szám (NaN
) jogkivonatokat jogi lebegőszámértékként felismerje:+INF
pozitív végtelen, valamint aliasa+Infinity
ésInfinity
.-INF
negatív végtelen), alias-Infinity
.NaN
más nem a-számok esetében, például a nullával való osztás eredménye.
readerCaseSensitive
(alapértelmezetttrue
): a kis- és nagybetűk bizalmassági viselkedését adja meg, harescuedDataColumn
engedélyezve van. Ha igaz, mentse azokat az adatoszlopokat, amelyeknek a neve esetenként eltér a sémától; ellenkező esetben a kis- és nagybetűket nem érzékelyítő módon olvassa be. A Databricks SQL-ben és a Databricks Runtime 13.3 LTS-ben és újabb verziókban érhető el.
Válaszok
A sémadefiníciónak megfelelő mezőneveket és típusokat tartalmazó szerkezet.
Példák
> SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
{1,0.8}
> SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{2015-08-26 00:00:00}