Funkce from_xml

Platí pro:check marked yes Databricks SQL check marked yes 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

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

Návraty

A STRUCT s názvy polí a typy odpovídající 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ů oddělených čárkami a páry datových typů, jak se používá například 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 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.
  • 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 falsejsou všechny výsledné sloupce typu ř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é.
  • 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, zda mají být vynechány 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, který označuje č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}]}