Funktionen from_xml
Gäller för: Databricks SQL 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 xmlStr
schema
.
Syntax
from_xml(xmlStr, schema [, options])
Argument
-
xmlStr
: EttSTRING
uttryck som anger en enskild XML-post -
schema
: EttSTRING
uttryck eller anrop av schema_of_xml funktion. -
options
: En valfriMAP<STRING,STRING>
literal som anger direktiv.
Returer
En STRUCT
med fältnamn och typer som matchar definitionen för schema.
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änsade column namn och datatyppar som används i till exempel CREATE TABLE
.
options
, om detta anges, kan vara något av följande:
-
excludeAttribute
(standardfalse
): Om du vill exkludera attribut i element. -
mode
(standardPERMISSIVE
): 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 avcolumnNameOfCorruptRecord
och anger felaktiga fält till null. Om du vill behålla skadade poster kan du set ett strängtypsfält med namnetcolumnNameOfCorruptRecord
i en användardefinierad schema. Om ett schema inte har fältet släpper det skadade poster under parsningen. När du härleder en schemaså läggs ettcolumnNameOfCorruptRecord
-fält automatiskt till i en utdata schema. -
FAILFAST
: utlöser ett undantag när det möter skadade poster.
-
-
columnNameOfCorruptRecord
(standardvärdet är det värde som anges ispark.sql.columnNameOfCorruptRecord
): tillåter byte av det nya fältet having felaktigt formaterad sträng som skapats avPERMISSIVE
läge. Detta åsidosätterspark.sql.columnNameOfCorruptRecord
. -
inferSchema
(standardtrue
): omtrue
, försöker härleda en lämplig typ för varje resulterande attribut, till exempel en boolesk, numerisk eller datumtyp. Omfalse
är alla resulterande columns av strängtyp. -
prefersDecimal
(standardfalse
): tolkar alla flyttal values som en typ av decimaltal. Ifall values inte får plats som heltal, då tolkas de som double. -
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
(standardtrue
): Definierar om omgivande blanksteg från values 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 på annat sätt de schema som tillhandahålls eller härleds. -
ignoreNamespace
(standardfalse
): Omtrue
ignoreras 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å elementetrowTag
, bara dess underordnade. Observera att XML-parsning i allmänhet inte är namnområdesmedveten även om den är falsk. -
timestampFormat
(standardyyyy-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
(standardyyyy-MM-dd'T'HH:mm:ss[.SSS]
): anger den sträng som indikerar en tidsstämpel utan timezone-format. Anpassade datumformat följer formaten i Datetime-mönster. Detta gäller för timestampNTZType-typen. -
dateFormat
(standardyyyy-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 ären-US
): anger en språktagg i IETF BCP 47-format. Detta används till exempel vid parsning av datum och tidsstämplar. -
nullValue
(standard ärnull
): 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}]}