from_xml
-Funktion
Gilt für: Databricks SQL Databricks Runtime 14.1 und höher
Wichtig
Dieses Feature befindet sich in der Public Preview.
Gibt einen Strukturwert zurück, der mithilfe von schema
aus xmlStr
analysiert wird.
Syntax
from_xml(xmlStr, schema [, options])
Argumente
xmlStr
: EinSTRING
-Ausdruck, der einen einzelnen XML-Eintrag angibtschema
: EinSTRING
-Ausdruck oder ein Abruf der schema_of_xml-Funktion.options
: Ein optionalesMAP<STRING,STRING>
-Literal, das Anweisungen angibt.
Gibt zurück
STRUCT
mit Feldnamen und Typen, die mit der Schemadefinition übereinstimmen.
xmlStr
sollte in Bezug auf schema
und options
wohlgeformt sein. Wenn xmlStr
nicht analysiert werden kann, wird NULL
zurückgegeben.
schema
muss als Spaltenname/Datentyp-Paare mit Kommas als Trennzeichen definiert werden, z. B wie in CREATE TABLE
.
options
kann Folgendes sein (sofern angegeben):
excludeAttribute
(Standardwert:false
): Gibt an, ob Attribute in Elementen ausgeschlossen werden.mode
(Standardwert istPERMISSIVE
): Hiermit wird die Behandlung von beschädigten Datensätzen bei der Analyse festgelegt.PERMISSIVE
: Wenn ein beschädigter Datensatz erkannt wird, wird die falsch formatierte Zeichenfolge in ein durchcolumnNameOfCorruptRecord
konfiguriertes Feld eingefügt, und die falsch formatierten Felder werden auf NULL festgelegt. Um beschädigte Datensätze beizubehalten, können Sie ein Zeichenfolgenfeld namenscolumnNameOfCorruptRecord
in einem benutzerdefinierten Schema festlegen. Wenn das Feld nicht im Schema vorhanden ist, werden beschädigte Datensätze bei der Analyse gelöscht. Beim Ableiten eines Schemas wird in einem Ausgabeschema implizit eincolumnNameOfCorruptRecord
-Feld hinzugefügt.FAILFAST
: Hiermit wird eine Ausnahme ausgelöst, wenn beschädigte Datensätze erkannt werden.
columnNameOfCorruptRecord
(Standardwert ist der inspark.sql.columnNameOfCorruptRecord
angegebene Wert): Hiermit wird das Umbenennen des neuen Felds mit der nicht wohlgeformten Zeichenfolge ermöglicht, das imPERMISSIVE
-Modus erstellt wurde. Dadurch wirdspark.sql.columnNameOfCorruptRecord
überschrieben.inferSchema
(Standardwert:true
): Wenntrue
, versucht, einen geeigneten Typ für jedes resultierende Attribut, z. B. einen booleschen, numerischen oder Datumstyp, abgeleitet zu haben. Wennfalse
, sind alle resultierenden Spalten vom Zeichenfolgentyp.prefersDecimal
(Standardwertfalse
): Hiermit werden alle Gleitkommawerte als Dezimaltyp abgeleitet. Wenn die Werte nicht in decimal-Werten angegeben werden können, werden sie als double-Werte abgeleitet.attributePrefix
(Standardwert:_
): Das Präfix für Attribute, um Attribute von Elementen zu unterscheiden. Dies wird das Präfix für Feldnamen sein. Eine leere Zeichenfolge ist zulässig.valueTag
(Standard_VALUE
): Das Tag, das für die Zeichendaten innerhalb von Elementen verwendet wird, die auch Attribute oder untergeordnete Elemente enthalten.encoding
(Standardformat ist UTF-8): Hiermit werden die XML-Dateien entsprechend des angegebenen Codierungstyps decodiert.ignoreSurroundingSpaces
(Standardwert:true
): Definiert, ob Leerzeichen von zu lesenden Werten übersprungen werden sollen.rowValidationXSDPath
: Pfad zu einer XSD-Datei, die verwendet wird, um den XML-Code für jede Zeile einzeln zu überprüfen. Zeilen, die nicht validiert werden können, werden wie oben beschrieben als Parse-Fehler behandelt. Die XSD wirkt sich nicht anderweitig auf das bereitgestellte oder abgeleitete Schema aus.ignoreNamespace
(Standardwert:false
): Wenntrue
, werden Namespacespräfixe für XML-Elemente und -Attribute ignoriert. Die Tags<abc:author>
und<def:author>
würden beispielsweise so behandelt werden, als wären beide nur<author>
. Beachten Sie, dass Namespaces für dasrowTag
-Element nicht ignoriert werden können, nur deren untergeordnete Elemente. Beachten Sie, dass die XML-Analyse im Allgemeinen Namespaces nicht unterstützt, selbst bei FALSE.timestampFormat
(Standardformatyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): Hiermit wird die Zeichenfolge festgelegt, die ein Zeitstempelformat angibt. Benutzerdefinierte Datumsformate folgen den Formaten im Artikel zu datetime-Mustern. Dies gilt für den timestamp-Typ.timestampNTZFormat
(Standardyyyy-MM-dd'T'HH:mm:ss[.SSS]
): Legt die Zeichenfolge fest, die einen Zeitstempel ohne Zeitzonenformat angibt. Benutzerdefinierte Datumsformate folgen den Formaten im Artikel zu datetime-Mustern. Dies gilt für den TimestampNTZType-Typ.dateFormat
(Standardformatyyyy-MM-dd
): Hiermit wird die Zeichenfolge festgelegt, die ein Datumsformat angibt. Benutzerdefinierte Datumsformate folgen den Formaten im Artikel zu datetime-Mustern. Dies gilt für den date-Typ.locale
(Standard isten-US
): Hiermit wird ein Gebietsschema als Sprachtag im IETF BCP 47-Format festgelegt. das beispielsweise beim Analysieren von Datumsangaben und Zeitstempeln verwendet wird.nullValue
(Standard istnull
): Hiermit wird die Zeichenfolgendarstellung eines NULL-Werts festgelegt.
Beispiele
> 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}]}