from_xml-Funktion

Gilt für: Häkchen ja Databricks SQL durch Häkchen mit „Ja“ markiert 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: Ein STRING-Ausdruck, der einen einzelnen XML-Eintrag angibt
  • schema: Ein STRING-Ausdruck oder ein Abruf der schema_of_xml-Funktion.
  • options: Ein optionales MAP<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 ist PERMISSIVE): 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 durch columnNameOfCorruptRecord konfiguriertes Feld eingefügt, und die falsch formatierten Felder werden auf NULL festgelegt. Um beschädigte Datensätze beizubehalten, können Sie ein Zeichenfolgenfeld namens columnNameOfCorruptRecord 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 ein columnNameOfCorruptRecord-Feld hinzugefügt.
    • FAILFAST: Hiermit wird eine Ausnahme ausgelöst, wenn beschädigte Datensätze erkannt werden.
  • columnNameOfCorruptRecord (Standardwert ist der in spark.sql.columnNameOfCorruptRecord angegebene Wert): Hiermit wird das Umbenennen des neuen Felds mit der nicht wohlgeformten Zeichenfolge ermöglicht, das im PERMISSIVE-Modus erstellt wurde. Dadurch wird spark.sql.columnNameOfCorruptRecord überschrieben.
  • inferSchema (Standardwert: true): Wenn true, versucht, einen geeigneten Typ für jedes resultierende Attribut, z. B. einen booleschen, numerischen oder Datumstyp, abgeleitet zu haben. Wenn false, sind alle resultierenden Spalten vom Zeichenfolgentyp.
  • prefersDecimal (Standardwert false): 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): Wenn true, 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 das rowTag-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 (Standardformat yyyy-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 (Standard yyyy-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 (Standardformat yyyy-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 ist en-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 ist null): 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}]}