Funkcja from_xml
Dotyczy: Databricks SQL
Databricks Runtime 14.1 i nowsze
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Zwraca wartość struktury przeanalizowaną z xmlStr
metody using schema
.
Składnia
from_xml(xmlStr, schema [, options])
Argumenty
-
xmlStr
STRING
: Wyrażenie określające pojedynczy rekord XML -
schema
STRING
: wyrażenie lub wywołanie funkcji schema_of_xml. -
options
: opcjonalnyMAP<STRING,STRING>
literał określający dyrektywy.
Zwraca
STRUCT
z nazwami pól i typami pasującymi do definicji schematu.
xmlStr
powinny być dobrze sformułowane w odniesieniu do schema
i options
. Jeśli xmlStr
nie można przeanalizować NULL
, zostanie zwrócony.
schema
musi być zdefiniowane jako pary nazwy kolumny i typu danych, oddzielone przecinkami, jak to jest używane na przykład w CREATE TABLE
.
options
, jeśli podano, może to być dowolny z następujących elementów:
-
excludeAttribute
(ustawienie domyślnefalse
): czy wykluczać atrybuty w elementach. -
mode
(ustawienie domyślnePERMISSIVE
): umożliwia tryb radzenia sobie z uszkodzonymi rekordami podczas analizowania.-
PERMISSIVE
: gdy spełnia uszkodzony rekord, umieszcza źle sformułowany ciąg w polu skonfigurowanym przezcolumnNameOfCorruptRecord
program i ustawia źle sformułowane pola na wartość null. Aby zachować uszkodzone rekordy, można ustawić pole typu ciągu o nazwiecolumnNameOfCorruptRecord
w schemacie zdefiniowanym przez użytkownika. Jeśli schemat nie ma pola, usuwa uszkodzone rekordy podczas analizowania. Podczas wnioskowania schematu niejawnie dodaje polecolumnNameOfCorruptRecord
w schemacie wyjściowym. -
FAILFAST
: zgłasza wyjątek, gdy spełnia uszkodzone rekordy.
-
-
columnNameOfCorruptRecord
(wartość domyślna to wartość określona wspark.sql.columnNameOfCorruptRecord
): umożliwia zmianę nazwy nowego pola o źle sformułowanym ciągu utworzonym przez trybPERMISSIVE
. Spowoduje to przesłonięciaspark.sql.columnNameOfCorruptRecord
. -
inferSchema
(wartość domyślnatrue
): jeślitrue
program próbuje wywnioskować odpowiedni typ dla każdego atrybutu wynikowego, takiego jak wartość logiczna, numeryczna lub typ daty. Jeślifalse
, wszystkie wynikowe kolumny są typu ciągu. -
prefersDecimal
(domyślnafalse
): wywnioskuje wszystkie wartości zmiennoprzecinkowe jako typ dziesiętny. Jeśli wartości nie pasują do liczby dziesiętnej, wywnioskuje je jako podwójne. -
attributePrefix
(ustawienie domyślne_
): prefiks atrybutów do odróżnienia atrybutów od elementów. Będzie to prefiks nazw pól. Może być pustym ciągiem. -
valueTag
(ustawienie domyślne_VALUE
): tag używany dla danych znaków w elementach, które mają również atrybuty lub elementy podrzędne. -
encoding
(wartość domyślna UTF-8): dekoduje pliki XML według określonego typu kodowania. -
ignoreSurroundingSpaces
(domyślnatrue
): określa, czy należy pominąć otaczające białe znaki z odczytywanych wartości. -
rowValidationXSDPath
: ścieżka do pliku XSD używanego do sprawdzania poprawności kodu XML dla każdego wiersza osobno. Wiersze, które nie mogą sprawdzić poprawności, są traktowane jak błędy analizy, jak powyżej. XSD w inny sposób nie wpływa na podany lub wywnioskowany schemat. -
ignoreNamespace
(ustawienie domyślnefalse
): jeślitrue
prefiksy przestrzeni nazw dla elementów i atrybutów XML są ignorowane. Tagi<abc:author>
i<def:author>
na przykład będą traktowane tak, jakby oba były tylko<author>
. Należy pamiętać, że przestrzenie nazw nie mogą być ignorowane w elemecierowTag
, tylko jego elementy podrzędne. Należy pamiętać, że analizowanie kodu XML nie jest ogólnie uwzględniane w przestrzeni nazw, nawet jeśli jest to fałsz. -
timestampFormat
(wartość domyślnayyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): ustawia ciąg, który wskazuje format znacznika czasu. Niestandardowe formaty dat są zgodne z formatami we wzorcach daty/godziny. Dotyczy to typu znacznika czasu. -
timestampNTZFormat
(domyślnyyyyy-MM-dd'T'HH:mm:ss[.SSS]
): ustawia ciąg, który wskazuje znacznik czasu bez formatu strefy czasowej. Niestandardowe formaty dat są zgodne z formatami we wzorcach daty/godziny. Dotyczy to typu TimestampNTZType. -
dateFormat
(wartość domyślnayyyy-MM-dd
): ustawia ciąg, który wskazuje format daty. Niestandardowe formaty dat są zgodne z formatami we wzorcach daty/godziny. Dotyczy to typu daty. -
locale
(wartość domyślna toen-US
): ustawia ustawienia regionalne jako tag języka w formacie IETF BCP 47. Na przykład jest to używane podczas analizowania dat i sygnatur czasowych. -
nullValue
(wartość domyślna tonull
): Ustawia ciąg reprezentujący wartość null.
Przykłady
> 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}]}