Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime
Vrátí hodnotu struktury s hodnotou jsonStr a schema.
Syntaxe
from_json(jsonStr, schema [, options])
Argumenty
-
jsonStr: VýrazSTRINGurčující dokument JSON. -
schema:STRINGVýraz nebo vyvolání funkceschema_of_json. -
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.
Musí schema 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.
Alternativně můžete s Lakeflow Spark deklarativními kanály automaticky odvodit a vyvinout schéma pomocí from_json nastavením schema na hodnotu NULL a určením schemaLocationKey. Příklady najdete v tématu Odvození a vývoj schématu pomocí from_json kaná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 čímkoliv z následujících:
-
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ž narazí na poškozený záznam, umístí poškozený řetězec do pole nakonfigurovaného pomocícolumnNameOfCorruptRecorda nastaví poškozená pole na hodnotu null. Chcete-li zachovat poškozené záznamy, můžete nastavit pole typu řetězce s názvemcolumnNameOfCorruptRecordve 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ž narazí na 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řebíjíspark.sql.columnNameOfCorruptRecord. -
dateFormat(výchozíyyyy-MM-dd): nastaví řetězec, který označuje formát data. Vlastní formáty data se řídí formáty v Datetime patterns. To platí pro typ data. -
timestampFormat(výchozíyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): určuje řetězec, který označuje formát časového razítka. Vlastní formáty data se řídí formáty v Datetime patterns. 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í amultiLineje nastavena natrue, zjistí se automaticky. -
lineSep(výchozí hodnota pokrývá vše\r\r\na\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):setsná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:-
+INFpro kladné nekonečno, stejně jako aliasy+InfinityaInfinity. -
-INFpro záporné nekonečno), alias-Infinity. -
NaNpro jiná nečísaná čísla, například výsledek dělení nulou.
-
-
readerCaseSensitive(výchozítrue): Určuje chování citlivosti případu, pokudrescuedDataColumnje povoleno. Pokud ano, zachrání sloupce dat, jejichž názvy se liší pouze velikostí písmen od schématu, jinak se data čtou bez rozlišování velikosti 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}