A from_xml
függvény
A következőkre vonatkozik: Databricks SQL Databricks Runtime 14.1 vagy újabb
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
A használatból xmlStr
elemezett szerkezetértéket ad schema
vissza.
Syntax
from_xml(xmlStr, schema [, options])
Argumentumok
xmlStr
: EgyetlenSTRING
XML-rekordot meghatározó kifejezésschema
: ASTRING
schema_of_xml függvény kifejezése vagy meghívása.options
: Egy nem kötelezőMAP<STRING,STRING>
konstans, amely irányelveket határoz meg.
Válaszok
A STRUCT
sémadefiníciónak megfelelő mezőnevek és típusok.
xmlStr
kell jól formázott tekintetében schema
és options
. Ha xmlStr
nem lehet elemezni NULL
, a rendszer visszaadja.
schema
vesszővel tagolt oszlopnévként és adattípus-párként kell definiálni például CREATE TABLE
.
options
, ha van ilyen, az alábbiak bármelyike lehet:
excludeAttribute
(alapértelmezettfalse
): Az elemek attribútumainak kizárása.mode
(alapértelmezettPERMISSIVE
): lehetővé teszi a sérült rekordok elemzés közbeni kezelését.PERMISSIVE
: ha egy sérült rekordnak felel meg, a hibásan formázott sztringet egy , általcolumnNameOfCorruptRecord
konfigurált mezőbe helyezi, és null értékre állítja a hibásan formázott mezőket. A sérült rekordok megőrzéséhez beállíthat egy felhasználó által definiált sémában elnevezettcolumnNameOfCorruptRecord
sztring típusú mezőt. Ha egy séma nem rendelkezik a mezővel, az elemzés során a sérült rekordokat elveti. Séma következtetése esetén implicit módon hozzáad egy mezőt egycolumnNameOfCorruptRecord
kimeneti sémához.FAILFAST
: kivételt eredményez, ha sérült rekordoknak felel meg.
columnNameOfCorruptRecord
(az alapértelmezett érték a következőbenspark.sql.columnNameOfCorruptRecord
van megadva): lehetővé teszi az új mező átnevezését, amely a mód által létrehozott hibás sztringgelPERMISSIVE
rendelkezik. Ez a felülbírálásokspark.sql.columnNameOfCorruptRecord
.inferSchema
(alapértelmezetttrue
): hatrue
az eredményül kapott attribútumok megfelelő típusára próbál következtetni, például logikai, numerikus vagy dátumtípusra. Hafalse
, az összes eredményül kapott oszlop sztring típusú.prefersDecimal
(alapértelmezettfalse
): az összes lebegőpontos értéket decimális típusként jelöli meg. Ha az értékek nem felelnek meg a decimális értékeknek, akkor azokat dupla értékként jelöli meg.attributePrefix
(alapértelmezett_
): Az attribútumok előtagja, amely megkülönbözteti az attribútumokat az elemektől. Ez lesz a mezőnevek előtagja. Lehet üres sztring.valueTag
(alapértelmezett_VALUE
): Az attribútum(ok) vagy gyermekelem(ek) elemekkel rendelkező elemek karakteradataihoz használt címke.encoding
(alapértelmezett UTF-8): az XML-fájlokat a megadott kódolási típus szerint dekódolja.ignoreSurroundingSpaces
(alapértelmezetttrue
): Azt határozza meg, hogy az olvasott értékekből származó térközök kihagyhatók-e.rowValidationXSDPath
: Egy XSD-fájl elérési útja, amely az EGYES sorok XML-jének ellenőrzésére szolgál. A nem érvényesíthető sorok elemzési hibákként lesznek kezelve a fenti módon. Az XSD egyébként nem befolyásolja a megadott sémát, és nem következik be.ignoreNamespace
(alapértelmezettfalse
): Hatrue
az XML-elemek és attribútumok névtereinek előtagjai figyelmen kívül lesznek hagyva. A címkéket<abc:author>
<def:author>
és például a címkéket úgy kell kezelni, mintha mindkettő csak<author>
. Vegye figyelembe, hogy a névterek nem hagyhatók figyelmen kívül azrowTag
elemen, csak azok gyermekein. Vegye figyelembe, hogy az XML-elemzés általában nem névtérérzékeny még akkor sem, ha hamis.timestampFormat
(alapértelmezettyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): beállítja az időbélyeg formátumát jelző sztringet. Az egyéni dátumformátumok a Datetime-minták formátumait követik. Ez az időbélyeg típusára vonatkozik.timestampNTZFormat
(alapértelmezettyyyy-MM-dd'T'HH:mm:ss[.SSS]
): beállítja az időzón formátum nélküli időbélyeget jelző sztringet. Az egyéni dátumformátumok a Datetime-minták formátumait követik. Ez a TimestampNTZType típusra vonatkozik.dateFormat
(alapértelmezettyyyy-MM-dd
): beállítja a dátumformátumot jelző sztringet. Az egyéni dátumformátumok a Datetime-minták formátumait követik. Ez a dátumtípusra vonatkozik.locale
(alapértelmezés szerinten-US
): nyelvi címkeként állítja be a területi beállításokat IETF BCP 47 formátumban. Ez például a dátumok és időbélyegek elemzésekor használatos.nullValue
(alapértelmezett érték):null
Null érték sztring-ábrázolását állítja be.
Példák
> 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}]}