from_xml
-functie
Van toepassing op: Databricks SQL 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
: EenSTRING
expressie die één XML-record opgeeft -
schema
: EenSTRING
expressie of aanroep van schema_of_xml functie. -
options
: Een optionele letterlijkeMAP<STRING,STRING>
waarde die instructies aangeeft.
Retouren
Een STRUCT
met veldnamen en -typen die overeenkomen met de schema definitie.
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 column naam- en gegevenstypeparen, zoals wordt gebruikt in bijvoorbeeld CREATE TABLE
.
options
, indien opgegeven, kan een van de volgende zijn:
-
excludeAttribute
(standaardfalse
): Of kenmerken in elementen moeten worden uitgesloten. -
mode
(standaardPERMISSIVE
): 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 doorcolumnNameOfCorruptRecord
en stelt u ongeldige velden in op null. Als u beschadigde records wilt behouden, kunt u een tekenreekstypeveld met de naamcolumnNameOfCorruptRecord
set in een door de gebruiker gedefinieerde schema. Als een schema het veld niet heeft, verwijdert het corrupte records tijdens het parseren. Bij het afleiden van een schemawordt impliciet eencolumnNameOfCorruptRecord
-veld toegevoegd aan het uitvoer schema. -
FAILFAST
: genereert een uitzondering wanneer deze voldoet aan beschadigde records.
-
-
columnNameOfCorruptRecord
(standaard is de waarde die is opgegeven inspark.sql.columnNameOfCorruptRecord
): staat het wijzigen van de naam van het nieuwe veld toe having ongeldige tekenreeks die is gemaakt doorPERMISSIVE
modus. Dit overschrijftspark.sql.columnNameOfCorruptRecord
. -
inferSchema
(standaardtrue
): als , probeerttrue
een geschikt type af te leiden voor elk resulterend kenmerk, zoals een Booleaanse waarde, numeriek of datumtype. Alsfalse
, zijn alle resulterende columns van tekenreekstype. -
prefersDecimal
(standaardfalse
): geeft alle drijvendekomma-values af als een decimaal type. Als de values niet in een decimaal getal 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
(standaardtrue
): Hiermee definieert u of omringende witruimten van values 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 heeft verder geen invloed op de opgegeven of afgeleide schema. -
ignoreNamespace
(standaardfalse
): Alstrue
, 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 hetrowTag
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
(standaardyyyy-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
(standaardyyyy-MM-dd'T'HH:mm:ss[.SSS]
): stelt de tekenreeks in die een tijdstempel aangeeft zonder timezone notatie. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het type TimestampNTZType. -
dateFormat
(standaardyyyy-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 isen-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 isnull
): 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}]}