from_xml-functie

Van toepassing op:check marked yes Databricks SQL check marked yes Databricks Runtime 14.1 en hoger

Belangrijk

Deze functie is beschikbaar als openbare preview.

Retourneert een struct-waarde die is geparseerd uit het xmlStr gebruik schema.

Syntaxis

from_xml(xmlStr, schema [, options])

Argumenten

  • xmlStr: Een STRING expressie die één XML-record opgeeft
  • schema: Een STRING expressie of aanroep van schema_of_xml functie.
  • options: Een optionele letterlijke MAP<STRING,STRING> waarde die instructies aangeeft.

Retouren

Een STRUCT met veldnamen en -typen die overeenkomen met de schemadefinitie.

xmlStr moet goed worden gevormd met betrekking tot schema en options. Als xmlStr kan niet worden geparseerd NULL , wordt geretourneerd.

schema moet worden gedefinieerd als door komma's gescheiden kolomnaam en gegevenstypeparen, zoals wordt gebruikt in bijvoorbeeld CREATE TABLE.

options, indien opgegeven, kan een van de volgende zijn:

  • excludeAttribute (standaard false): Of kenmerken in elementen moeten worden uitgesloten.
  • mode (standaard PERMISSIVE): staat een modus toe voor het verwerken van beschadigde records tijdens het parseren.
    • PERMISSIVE: wanneer deze voldoet aan een beschadigde record, plaatst u de ongeldige tekenreeks in een veld dat is geconfigureerd door columnNameOfCorruptRecorden stelt u ongeldige velden in op null. Als u beschadigde records wilt behouden, kunt u een tekenreekstypeveld instellen met de naam columnNameOfCorruptRecord in een door de gebruiker gedefinieerd schema. Als een schema het veld niet heeft, worden beschadigde records verwijderd tijdens het parseren. Bij het uitstellen van een schema wordt impliciet een columnNameOfCorruptRecord veld in een uitvoerschema toegevoegd.
    • FAILFAST: genereert een uitzondering wanneer deze voldoet aan beschadigde records.
  • columnNameOfCorruptRecord (standaard is de waarde die is opgegeven in spark.sql.columnNameOfCorruptRecord): staat het wijzigen van de naam van het nieuwe veld toe met een ongeldige tekenreeks die is gemaakt door PERMISSIVE de modus. Dit overschrijft spark.sql.columnNameOfCorruptRecord.
  • inferSchema (standaard true): als , probeert trueeen geschikt type af te leiden voor elk resulterend kenmerk, zoals een Booleaanse waarde, numeriek of datumtype. Als falsealle resulterende kolommen van het tekenreekstype zijn.
  • prefersDecimal (standaard false): geeft alle drijvende-kommawaarden af als een decimaal type. Als de waarden niet in decimalen passen, worden ze afgeleid als dubbele waarden.
  • attributePrefix (standaard _): het voorvoegsel voor kenmerken om kenmerken te onderscheiden van elementen. Dit is het voorvoegsel voor veldnamen. Kan een lege tekenreeks zijn.
  • valueTag (standaard _VALUE): de tag die wordt gebruikt voor de tekengegevens binnen elementen die ook kenmerk(en) of onderliggende elementen bevatten.
  • encoding (standaard UTF-8): decodeert de XML-bestanden op basis van het opgegeven coderingstype.
  • ignoreSurroundingSpaces (standaard true): Hiermee definieert u of omringende witruimten van waarden die worden gelezen, moeten worden overgeslagen.
  • rowValidationXSDPath: Pad naar een XSD-bestand dat wordt gebruikt om de XML voor elke rij afzonderlijk te valideren. Rijen die niet kunnen worden gevalideerd, worden behandeld als parseringsfouten zoals hierboven. De XSD is anders niet van invloed op het opgegeven schema of afgeleid.
  • ignoreNamespace (standaard false): Als true, naamruimten voorvoegsels op XML-elementen en kenmerken worden genegeerd. Tags <abc:author> en <def:author> worden bijvoorbeeld behandeld alsof beide alleen <author>zijn. Houd er rekening mee dat naamruimten niet kunnen worden genegeerd voor het rowTag element, alleen de onderliggende elementen. Houd er rekening mee dat XML-parsering in het algemeen niet bekend is met naamruimte, zelfs niet als deze onwaar is.
  • timestampFormat (standaard yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): stelt de tekenreeks in die een tijdstempelnotatie aangeeft. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het type tijdstempel.
  • timestampNTZFormat (standaard yyyy-MM-dd'T'HH:mm:ss[.SSS]): stelt de tekenreeks in die een tijdstempel aangeeft zonder tijdzone-indeling. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het type TimestampNTZType.
  • dateFormat (standaard yyyy-MM-dd): stelt de tekenreeks in die een datumnotatie aangeeft. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het datumtype.
  • locale (standaard is en-US): stelt een landinstelling in als taaltag in IETF BCP 47-indeling. Dit wordt bijvoorbeeld gebruikt tijdens het parseren van datums en tijdstempels.
  • nullValue (standaard is null): hiermee stelt u de tekenreeksweergave van een null-waarde in.

Voorbeelden

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