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 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änsade par av kolumnnamn och datatyper, som används till exempel i 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 ange ett strängtypsfält med namnetcolumnNameOfCorruptRecord
i ett användardefinierat schema. Om ett schema inte har fältet, så ignoreras skadade poster under parsning. När du härleder ett schema lägger det implicit till ettcolumnNameOfCorruptRecord
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 ispark.sql.columnNameOfCorruptRecord
): tillåter att döpa om det nya fältet när det har en felaktigt formaterad sträng som skapats avPERMISSIVE
-läget. 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 kolumner av strängtyp. -
prefersDecimal
(standardfalse
): 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
(standardtrue
): Definierar om omgivande blanksteg från värden som läses 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
(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 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
(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}]}