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í strukturu nebo hodnotu varianty, která byla parsována z xmlStr pomocí 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í funkce schema_of_xml.
  • 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, nebo hodnotu VARIANT, pokud je schéma typu Variant.

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

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. V Databricks Runtime 16.4 a novějších lze schema také definovat jako jeden typ VARIANT.

options, pokud je uvedeno, může být cokoli z následujícího:

  • 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ž narazí na poškozený záznam, umístí poškozený řetězec do pole nakonfigurovaného pomocí columnNameOfCorruptRecord 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ž narazí na 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řepíše 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): Určuje, jestli se mají přeskočit okolní mezery u čtených hodnot.
  • 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 true, jsou 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 ignorovat u elementu rowTag, pouze u jeho potomků. 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]): 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.
  • 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 data se řídí formáty v Datetime patterns. To platí pro typ TimestampNTZType.
  • 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.
  • 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}]}

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