Udostępnij za pośrednictwem


Funkcja from_xml

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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

  • xmlStrSTRING: Wyrażenie określające pojedynczy rekord XML
  • schemaSTRING: wyrażenie lub wywołanie funkcji schema_of_xml.
  • options: opcjonalny MAP<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ślne false): czy wykluczać atrybuty w elementach.
  • mode (ustawienie domyślne PERMISSIVE): 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 przez columnNameOfCorruptRecordprogram i ustawia źle sformułowane pola na wartość null. Aby zachować uszkodzone rekordy, można ustawić pole typu ciągu o nazwie columnNameOfCorruptRecord w schemacie zdefiniowanym przez użytkownika. Jeśli schemat nie ma pola, usuwa uszkodzone rekordy podczas analizowania. Podczas wnioskowania schematu niejawnie dodaje columnNameOfCorruptRecord pole w schemacie wyjściowym.
    • FAILFAST: zgłasza wyjątek, gdy spełnia uszkodzone rekordy.
  • columnNameOfCorruptRecord (wartość domyślna to wartość określona w spark.sql.columnNameOfCorruptRecordpliku ): umożliwia zmianę nazwy nowego pola o źle sformułowanym ciągu utworzonym przez PERMISSIVE tryb. Spowoduje to przesłonięcia spark.sql.columnNameOfCorruptRecord.
  • inferSchema (wartość domyślna true): jeśli trueprogram próbuje wywnioskować odpowiedni typ dla każdego atrybutu wynikowego, takiego jak wartość logiczna, numeryczna lub typ daty. Jeśli falsewszystkie wynikowe kolumny mają typ ciągu.
  • prefersDecimal (wartość domyślna false): 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ślne true): 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ślne false): jeśli trueprefiksy 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 elemecie rowTag , 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ślna yyyy-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ślna yyyy-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ślna yyyy-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 to en-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 to null): 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}]}