Funkce from_xml
Platí pro: Databricks SQL
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éhocolumnNameOfCorruptRecord
pomocí a nastaví poškozená pole na hodnotu null. Chcete-li zachovat poškozené záznamy, můžete nastavit pole typu řetězce s názvemcolumnNameOfCorruptRecord
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 polecolumnNameOfCorruptRecord
. -
FAILFAST
: vyvolá výjimku, když splňuje 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řepsáníspark.sql.columnNameOfCorruptRecord
. -
inferSchema
(výchozítrue
): pokudtrue
se 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
): 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
): 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 u elementurowTag
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 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}]}