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.
  • schemaSTRING: 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ří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 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á v spark.sql.columnNameOfCorruptRecord): Umožňuje přejmenování nového pole s poškozeným řetězcem vytvořeným režimem 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 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í a multiLine je nastaveno na true, 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 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ů 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, pokud rescuedDataColumn 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}