Megosztás a következőn keresztül:


A from_xml függvény

A következőkre vonatkozik: jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet 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 schemavissza.

Syntax

from_xml(xmlStr, schema [, options])

Argumentumok

  • xmlStr: Egyetlen STRING XML-rekordot meghatározó kifejezés
  • schema: A STRING 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értelmezett false): Az elemek attribútumainak kizárása.
  • mode (alapértelmezett PERMISSIVE): 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 , által columnNameOfCorruptRecordkonfigurá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 elnevezett columnNameOfCorruptRecord 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 egy columnNameOfCorruptRecord 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őben spark.sql.columnNameOfCorruptRecordvan megadva): lehetővé teszi az új mező átnevezését, amely a mód által létrehozott hibás sztringgel PERMISSIVE rendelkezik. Ez a felülbírálások spark.sql.columnNameOfCorruptRecord.
  • inferSchema (alapértelmezett true): ha trueaz eredményül kapott attribútumok megfelelő típusára próbál következtetni, például logikai, numerikus vagy dátumtípusra. Ha false, az összes eredményül kapott oszlop sztring típusú.
  • prefersDecimal (alapértelmezett false): 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értelmezett true): 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értelmezett false): Ha trueaz 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 az rowTag 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értelmezett yyyy-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értelmezett yyyy-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értelmezett yyyy-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 szerint en-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): nullNull é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}]}