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 XMLschema
STRING
: wyrażenie lub wywołanie funkcji schema_of_xml.options
: opcjonalnyMAP<STRING,STRING>
literał określający dyrektywy.
Zwraca
Element 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ć definiowana jako nazwa kolumny rozdzielone przecinkami i pary typów danych, które są używane na przykład 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 dodajecolumnNameOfCorruptRecord
pole 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
pliku ): umożliwia zmianę nazwy nowego pola o źle sformułowanym ciągu utworzonym przezPERMISSIVE
tryb. 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 mają typ ciągu.prefersDecimal
(wartość 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
(ustawienie domyślnetrue
): 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 nie ma w inny sposób wpływu na podany schemat lub wywnioskowany.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
(wartość domyślnayyyy-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}]}