Sdílet prostřednictvím


Funkce from_xml

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

Důležité

Tato funkce je ve verzi Public Preview.

Vrátí hodnotu struktury parsovanou z xmlStr metody using schema.

Syntaxe

from_xml(xmlStr, schema [, options])

Argumenty

  • xmlStr STRING: Výraz určující jeden záznam XML
  • schema STRING: Výraz nebo vyvolání schema_of_xml funkce.
  • options: Volitelný MAP<STRING,STRING> literál určující direktivy.

Návraty

STRUCT s názvy polí a typy, které odpovídají definici schématu.

xmlStr by měla být dobře vytvořená s ohledem na schema a options. Pokud xmlStr nelze analyzovat NULL , je vrácena.

schema musí být definován jako názvy sloupců a datových typů oddělené čárkami, jak se používá například ve CREATE TABLE.

options, pokud je uvedeno, může být některá z těchto možností:

  • excludeAttribute (výchozí false): Zda se mají vyloučit atributy v prvcích.
  • 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.
  • inferSchema (výchozí true): pokud truese pokusí odvodit odpovídající typ pro každý výsledný atribut, například logický, číselný nebo datový typ. Pokud false, všechny výsledné sloupce mají typ řetězce.
  • prefersDecimal (výchozí false): vyhodnocuje všechny hodnoty s plovoucí desetinnou čárkou jako desetinný typ. Pokud se hodnoty nevejdou do desetinných míst, odvodí je jako dvojité.
  • attributePrefix (výchozí _): Předpona atributů k rozlišení atributů od prvků. Toto bude předpona pro názvy polí. Může to být prázdný řetězec.
  • valueTag (výchozí _VALUE): Značka použitá pro data znaků v elementech, které mají také atributy nebo podřízené elementy.
  • encoding (výchozí UTF-8): dekóduje soubory XML zadaným typem kódování.
  • ignoreSurroundingSpaces (výchozí true): Definuje, jestli se mají přeskočit okolní prázdné znaky z hodnot, které se čtou.
  • rowValidationXSDPath: Cesta k souboru XSD, který slouží k ověření XML pro každý řádek jednotlivě. Řádky, které se nepodaří ověřit, se považují za parsované chyby jako výše. XSD jinak nemá vliv na zadané schéma ani na odvození.
  • ignoreNamespace (výchozí false): Pokud truejsou předpony oborů názvů u elementů a atributů XML ignorovány. Značky <abc:author> a <def:author> byly by například považovány za to, že oba jsou jen <author>. Všimněte si, že obory názvů nelze u elementu rowTag ignorovat, pouze jeho podřízené položky. Mějte na paměti, že analýza XML obecně nerozšimuje obor názvů, i když je false.
  • 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.
  • timestampNTZFormat (výchozí yyyy-MM-dd'T'HH:mm:ss[.SSS]): nastaví řetězec označující časové razítko bez formátu časového pásma. Vlastní formáty kalendářních dat se řídí formáty v vzorech datetime. To platí pro typ TimestampNTZType.
  • 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.
  • locale (výchozí hodnota je en-US): Nastaví národní prostředí jako značku 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.
  • nullValue (výchozí hodnota je null): Nastaví řetězcovou reprezentaci hodnoty null.

Příklady

> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'a INT, b DOUBLE');
 {"a":1,"b":0.8}

> SELECT from_xml('<p><time>26/08/2015</time></p>', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 { "time": "2015-08-26T00:00:00.000+0000"}

> SELECT from_xml('<p><teacher>Alice</teacher><student><name>Bob</name><rank>1</rank></student><student><name>Charlie</name><rank>2</rank></student></p>',
                  'STRUCT<teacher: STRING, student: ARRAY<STRUCT<name: STRING, rank: INT>>>');
 {"teacher":"Alice","student":[{"name":"Bob","rank":1},{"name":"Charlie","rank":2}]}