Funktionen from_xml

Gäller för:check marked yes Databricks SQL check marked yes Databricks Runtime 14.1 och senare

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Returnerar ett struct-värde som parsats från med hjälp av xmlStrschema.

Syntax

from_xml(xmlStr, schema [, options])

Argument

  • xmlStr: Ett STRING uttryck som anger en enskild XML-post
  • schema: Ett STRING uttryck eller anrop av schema_of_xml funktion.
  • options: En valfri MAP<STRING,STRING> literal som anger direktiv.

Returer

A STRUCT med fältnamn och typer som matchar schemadefinitionen.

xmlStr bör vara välformulerad med avseende på schema och options. Om xmlStr inte kan parsas NULL returneras.

schema måste definieras som kommaavgränsat kolumnnamn och datatyppar som används i till exempel CREATE TABLE.

options, om detta anges, kan vara något av följande:

  • excludeAttribute (standard false): Om du vill exkludera attribut i element.
  • mode (standard PERMISSIVE): tillåter ett läge för att hantera skadade poster under parsning.
    • PERMISSIVE: När den möter en skadad post placerar du den felaktigt formulerade strängen i ett fält som konfigurerats av columnNameOfCorruptRecordoch anger felaktiga fält till null. Om du vill behålla skadade poster kan du ange ett strängtypsfält med namnet columnNameOfCorruptRecord i ett användardefinierat schema. Om ett schema inte har fältet släpps skadade poster under parsningen. När du härleder ett schema lägger det implicit till ett columnNameOfCorruptRecord fält i ett utdataschema.
    • FAILFAST: utlöser ett undantag när det möter skadade poster.
  • columnNameOfCorruptRecord (standardvärdet är det värde som anges i spark.sql.columnNameOfCorruptRecord): tillåter att det nya fältet byts namn med en felaktig sträng som skapats av PERMISSIVE läget. Detta åsidosätter spark.sql.columnNameOfCorruptRecord.
  • inferSchema (standard true): om true, försöker härleda en lämplig typ för varje resulterande attribut, till exempel en boolesk, numerisk eller datumtyp. Om falseär alla resulterande kolumner av strängtyp.
  • prefersDecimal (standard false): härleder alla flyttalsvärden som en decimaltyp. Om värdena inte får plats i decimaltecken, så härleds de som dubblar.
  • attributePrefix (standard _): Prefixet för attribut för att skilja attribut från element. Det här är prefixet för fältnamn. Kan vara en tom sträng.
  • valueTag (standard _VALUE): Taggen som används för teckendata i element som också har attribut eller underordnade element.
  • encoding (standard-UTF-8): avkodar XML-filerna efter den angivna kodningstypen.
  • ignoreSurroundingSpaces (standard true): Definierar om omgivande blanksteg från värden som ska läsas ska hoppas över.
  • rowValidationXSDPath: Sökväg till en XSD-fil som används för att verifiera XML för varje rad individuellt. Rader som inte kan verifieras behandlas som parsningsfel som ovan. XSD påverkar inte det angivna eller härledda schemat på något annat sätt.
  • ignoreNamespace (standard false): Om trueignoreras namnrymdsprefix för XML-element och attribut. Taggar <abc:author> och <def:author> skulle till exempel behandlas som om båda bara <author>är . Observera att namnrymder inte kan ignoreras på elementet rowTag , bara dess underordnade. Observera att XML-parsning i allmänhet inte är namnområdesmedveten även om den är falsk.
  • timestampFormat (standard yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): anger strängen som anger ett tidsstämpelformat. Anpassade datumformat följer formaten i Datetime-mönster. Detta gäller för tidsstämpeltypen.
  • timestampNTZFormat (standard yyyy-MM-dd'T'HH:mm:ss[.SSS]): anger strängen som anger en tidsstämpel utan tidszonsformat. Anpassade datumformat följer formaten i Datetime-mönster. Detta gäller för timestampNTZType-typen.
  • dateFormat (standard yyyy-MM-dd): anger strängen som anger ett datumformat. Anpassade datumformat följer formaten i Datetime-mönster. Detta gäller för datumtyp.
  • locale (standard är en-US): anger en språktagg i IETF BCP 47-format. Detta används till exempel vid parsning av datum och tidsstämplar.
  • nullValue (standard är null): Anger strängrepresentationen av ett null-värde.

Exempel

> 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}]}