Funkce from_json
Platí pro: Databricks SQL
Databricks Runtime
Vrátí hodnotu struktury s hodnotou jsonStr
a schema
.
Syntaxe
from_json(jsonStr, schema [, options])
Argumenty
-
jsonStr
: VýrazSTRING
určující dokument JSON. -
schema
STRING
: Výraz nebo vyvolání schema_of_json funkce. -
options
: VolitelnýMAP<STRING,STRING>
literál určující direktivy.
jsonStr
by měla být dobře vytvořená s ohledem na schema
a options
.
schema
musí být definovány jako názvy sloupců oddělených čárkami a páry datových typů, podobně jako formát použitý v CREATE TABLE
.
Před databricks Runtime 12.2 schema
musí být literál.
Poznámka:
Názvy sloupců a polí v schema
rozlišují malá a velká písmena a musí přesně odpovídat názvům v jsonStr
.
Pokud chcete mapovat pole JSON, která se liší pouze v případě, můžete výslednou strukturu přetypovat na odlišné názvy polí.
Další podrobnosti najdete v příkladech.
options
, pokud je uvedeno, může být některá z těchto možností:
-
primitivesAsString
(výchozífalse
): odvodí všechny primitivní hodnoty jako typ řetězce. -
prefersDecimal
(výchozífalse
): interpretuje všechny hodnoty s pohyblivou řádovou čárkou jako desetinný typ. Pokud se hodnoty nevejdou do desetinných míst, odvodí je jako dvojité. -
allowComments
(výchozífalse
): ignoruje komentář stylu Java a C++ v záznamech JSON. -
allowUnquotedFieldNames
(výchozífalse
): Povoluje názvy polí JSON bez citování. -
allowSingleQuotes
(výchozítrue
): Umožňuje jednoduché uvozovky kromě dvojitých uvozovek. -
allowNumericLeadingZeros
(výchozífalse
): umožňuje počáteční nuly v číslech (například00012
). -
allowBackslashEscapingAnyCharacter
(výchozífalse
): umožňuje přijmout uvozování všech znaků pomocí mechanismu uvozování zpětného lomítka. -
allowUnquotedControlChars
(výchozífalse
): Umožňuje řetězcům JSON obsahovat necitované řídicí znaky (ZNAKY ASCII s hodnotou menší než 32, včetně znaků tabulátoru a odřádkování) nebo ne. -
mode
(výchozíPERMISSIVE
): Umožňuje režim pro práci s poškozenými záznamy během analýzy.-
PERMISSIVE
: Když splňuje poškozený záznam, umístí poškozený řetězec do pole nakonfigurovanéhocolumnNameOfCorruptRecord
pomocí a nastaví poškozená pole na hodnotu null. Chcete-li zachovat poškozené záznamy, můžete nastavit pole typu řetězce s názvemcolumnNameOfCorruptRecord
ve schématu definovaném uživatelem. Pokud schéma pole neobsahuje, během analýzy zahodí poškozené záznamy. Při odvození schématu implicitně přidá do výstupního schématu polecolumnNameOfCorruptRecord
. -
FAILFAST
: vyvolá výjimku, když splňuje poškozené záznamy.
-
-
columnNameOfCorruptRecord
(výchozí hodnota je hodnota zadaná vspark.sql.columnNameOfCorruptRecord
): umožňuje přejmenování nového pole s poškozeným řetězcem vytvořeným v režimuPERMISSIVE
. Toto přepsáníspark.sql.columnNameOfCorruptRecord
. -
dateFormat
(výchozíyyyy-MM-dd
): nastaví řetězec, který označuje formát data. Vlastní formáty kalendářních dat se řídí formáty v vzorech datetime. To platí pro typ data. -
timestampFormat
(výchozíyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): nastaví řetězec, který označuje formát časového razítka. Vlastní formáty kalendářních dat se řídí formáty v vzorech datetime. To platí pro typ časového razítka. -
multiLine
(výchozífalse
): parsuje jeden záznam, který může zahrnovat více řádků na soubor. -
encoding
(ve výchozím nastavení není nastaveno): umožňuje vynuceně nastavit jedno ze standardních základních nebo rozšířených kódování pro soubory JSON. Například UTF-16BE, UTF-32LE. Pokud není zadáno kódování amultiLine
je nastavena natrue
, zjistí se automaticky. -
lineSep
(výchozí hodnota pokrývá vše\r
\r\n
a\n
): definuje oddělovač řádků, který se má použít k analýze. -
samplingRatio
(výchozí 1.0): definuje zlomek vstupních objektů JSON používaných pro odvození schématu. -
dropFieldIfAllNull
(výchozífalse
): zda se má při odvozování schématu ignorovat sloupec všech hodnot null nebo prázdné pole nebo struktury. -
locale
(výchozí hodnota jeen-US
):sets
národní prostředí jako značka jazyka ve formátu IETF BCP 47. Používá se například při analýze kalendářních dat a časových razítek. -
allowNonNumericNumbers
(výchozítrue
): Umožňuje analyzátoru JSON rozpoznat sadu tokenů bez čísla (NaN
) jako platné číselné hodnoty:-
+INF
pro kladné nekonečno, stejně jako alias a+Infinity
Infinity
. -
-INF
pro záporné nekonečno), alias-Infinity
. -
NaN
pro jiná nečísaná čísla, například výsledek dělení nulou.
-
-
readerCaseSensitive
(výchozítrue
): Určuje chování citlivosti případu, pokudrescuedDataColumn
je povoleno. Když je podmínka pravdivá, zachraň sloupce dat, jejichž názvy se liší velkými a malými písmeny od schématu; jinak čti data bez rozlišování velkých a malých písmen. K dispozici v Databricks SQL a Databricks Runtime 13.3 LTS a novějších.
Návraty
Struktura s názvy polí a typy odpovídající definici schématu.
Příklady
> 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}