Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime
Egy szerkezetértéket ad vissza a jsonStr és schema elemekkel.
Szintaxis
from_json(jsonStr, schema [, options])
Argumentumok
-
jsonStr: JSON-dokumentumotSTRINGmeghatározó kifejezés. -
schema:STRINGkifejezés vagyschema_of_jsonfüggvény meghívása. -
options: Egy nem kötelezőMAP<STRING,STRING>konstans, amely irányelveket határoz meg.
jsonStr jól formázottnak kell lennie a schema és a options tekintetében.
Az schema oszlopokat vesszővel tagolt oszlopnevekként és adattípuspárként kell definiálni, hasonlóan a használt CREATE TABLEformátumhoz. A Databricks Runtime 12.2 előtt a schema literál kell, hogy legyen.
Azt is megteheti from_json , hogy a Lakeflow-folyamatokkal automatikusan kikövetkezeli és továbbfejleszti a sémát a NULL értékre állítással schema és egy schemaLocationKey. Példákat lásd: A séma from_json következtetése és továbbfejlesztése adatfolyamokban.
Megjegyzés
A schema oszlop- és mezőnevei érzékenyek a kis- és nagybetűkre, és pontosan meg kell egyezniük a jsonStr neveivel.
Ha olyan JSON-mezőket szeretne megfeleltetni, amelyek csak abban az esetben különböznek, az eredményként kapott szerkezetet különböző mezőnevekre állíthatja.
További részletekért lásd a példákat .
A lehetőségek teljes listáját a JSON-ban találja.
options, ha elérhető, lehet bármelyik az alábbiak közül:
-
primitivesAsString(alapértelmezettfalse): az összes primitív értéket sztringtípusként következteti. -
prefersDecimal(alapértelmezettfalse): az összes lebegőpontos értéket decimális típusként jelöli. 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 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 idézőjelek nélküli vezérlőkaraktereket (32-nél kisebb értékű ASCII-karaktereket, beleértve a tabulátor- és soremelés karaktereket) tartalmazzanak, vagy sem. -
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 , általcolumnNameOfCorruptRecordkonfigurá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 egycolumnNameOfCorruptRecordnevű sztring típusú mezőt egy felhasználó által definiált sémában. 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 egycolumnNameOfCorruptRecordmezőt egy kimeneti sémához. -
FAILFAST: kivételt eredményez, ha sérült rekordoknak felel meg.
-
-
columnNameOfCorruptRecord(az alapértelmezett érték azspark.sql.columnNameOfCorruptRecord): lehetővé teszi azPERMISSIVEmód által létrehozott hibás sztringet tartalmazó új mező átnevezését. Ez felülírja aspark.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, ésmultiLinetruevan beállítva, a rendszer automatikusan észleli. -
lineSep(alapértelmezés szerint az összesre\rvonatkozik,\r\nés\n): az elemzéshez használandó sorelválasztót határozza meg. -
samplingRatio(alapértelmezett 1.0): a sémakövetközé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):setsterületi beállítás nyelvi címkeként az 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) tokeneket érvényes lebegőpontos számértékekként felismerje.-
+INFa pozitív végtelent, valamint+InfinityésInfinityaliasát jelenti. - (c0) negatív végtelen), alias (c1).
-
NaNmás nem szám jellegű értékek esetében, mint például a nullával való osztás eredménye.
-
-
readerCaseSensitive(alapértelmezetttrue): a kis- és nagybetű érzékenységet határozza meg, harescuedDataColumnengedélyezve van. Ha ez igaz, mentse azokat az adatoszlopokat, amelyek neve csak a kis- és nagybetűk tekintetében tér el a sémától; ellenkező esetben olvassa be az adatokat a kis- és nagybetűk érzékenysége nélkül. A Databricks SQL-ben és a Databricks Runtime 13.3 LTS-ben és újabb verziókban érhető el.
Visszatérítések
A sémadefiníciónak megfelelő mezőneveket és típusokat tartalmazó szerkezet.
Ha a mode beállítás értéke FAILFAST, Azure Databricks MALFORMED_RECORD_IN_PARSING, ha a bemenet nem felel meg a sémának.
Gyakori hibafeltételek
Példák
> 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}
> SELECT from_json('invalid', 'a INT', map('mode', 'FAILFAST'));
Error: MALFORMED_RECORD_IN_PARSING