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án 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:
V názvech schema
sloupců a polí se rozlišují malá a velká písmena a musí přesně odpovídat názvům 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
): Odvodí všechny hodnoty s plovoucí desetinnou čá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 pojmenovanécolumnNameOfCorruptRecord
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ácolumnNameOfCorruptRecord
pole ve výstupním schématu.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 režimemPERMISSIVE
. 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 jeden 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 nastaveno natrue
, je rozpoznáno 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í hodnota 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 struktura.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ů not a-number (NaN
) jako zákonné číselné hodnoty s plovoucí desetinou čárkou:+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. Pokud je pravda, zachorání sloupce dat, jejichž názvy se liší písmeny od schématu; v opačném případě čte 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}