Sdílet prostřednictvím


Funkce from_json

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Vrátí hodnotu struktury s hodnotou jsonStr a schema.

Syntaxe

from_json(jsonStr, schema [, options])

Argumenty

  • jsonStr: Výraz STRING 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říklad 00012).
  • 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ého columnNameOfCorruptRecordpomocí a nastaví poškozená pole na hodnotu null. Chcete-li zachovat poškozené záznamy, můžete nastavit pole typu řetězce s názvem 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á do výstupního schématu pole columnNameOfCorruptRecord.
    • FAILFAST: vyvolá výjimku, když splňuje poškozené záznamy.
  • columnNameOfCorruptRecord (výchozí hodnota je hodnota zadaná v spark.sql.columnNameOfCorruptRecord): umožňuje přejmenování nového pole s poškozeným řetězcem vytvořeným v režimu PERMISSIVE. 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í a multiLine je nastavena na true, 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 je en-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 +InfinityInfinity.
    • -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, pokud rescuedDataColumn 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}