Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Funkce
Platí pro:
Databricks SQL
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
-
xmlStrSTRING: Výraz určující jeden záznam XML -
schema:STRINGVýraz nebo vyvolání funkceschema_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ícolumnNameOfCorruptRecorda nastaví poškozená pole na hodnotu null. Chcete-li zachovat poškozené záznamy, můžete nastavit pole typu řetězce s názvemcolumnNameOfCorruptRecordve 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 polecolumnNameOfCorruptRecord. -
FAILFAST: vyvolá výjimku, když narazí na poškozené záznamy.
-
-
columnNameOfCorruptRecord(výchozí hodnota je hodnota zadaná vspark.sql.columnNameOfCorruptRecord): umožňuje přejmenování nového pole s poškozeným řetězcem vytvořeným v režimuPERMISSIVE. Toto přepíšespark.sql.columnNameOfCorruptRecord. -
inferSchema(výchozítrue): pokudtruese pokusí odvodit odpovídající typ pro každý výsledný atribut, například logický, číselný nebo datový typ. Pokudfalse, 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): Pokudtrue, 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 elementurowTag, 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 jeen-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 jenull): 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}}