from_xml fungsi

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 14.1 ke atas

Penting

Fitur ini ada di Pratinjau Publik.

Mengembalikan nilai struct atau varian yang diurai dari xmlStr menggunakan schema.

Sintaks

from_xml(xmlStr, schema [, options])

Argumen

  • xmlStr: Ekspresi STRING yang menentukan satu rekaman XML
  • schema: Ekspresi STRING atau pemanggilan schema_of_xml fungsi.
  • options: Arahan penentuan harfiah opsional MAP<STRING,STRING> .

Pengembalian

STRUCT dengan nama kolom dan tipe yang cocok dengan definisi skema, atau nilai VARIANT jika skema adalah jenis tunggal Variant.

xmlStr harus terbentuk dengan baik sehubungan dengan schema dan options. Jika xmlStr tidak dapat diurai NULL dikembalikan.

schema harus didefinisikan sebagai nama kolom yang dipisahkan koma dan pasangan tipe data seperti yang digunakan dalam contoh CREATE TABLE. Dalam Databricks Runtime 16.4 ke atas, schema juga dapat didefinisikan sebagai satu jenis VARIANT.

options, jika tersedia, dapat berupa salah satu dari berikut ini:

  • excludeAttribute (default false): Apakah akan mengecualikan atribut dalam elemen.
  • mode (default PERMISSIVE): memungkinkan mode untuk menangani catatan yang rusak selama penguraian.
    • PERMISSIVE: ketika menemui catatan yang rusak, menempatkan string yang rusak ke dalam bidang yang dikonfigurasi oleh columnNameOfCorruptRecord, dan menyetel bidang yang rusak menjadi null. Untuk menyimpan rekaman yang rusak, Anda dapat mengatur bidang jenis string bernama columnNameOfCorruptRecord dalam skema yang ditentukan pengguna. Jika skema tidak memiliki bidang, skema akan mengabaikan rekaman yang rusak selama penguraian. Saat menyimpulkan skema, secara implisit menambahkan bidang columnNameOfCorruptRecord dalam skema output.
    • FAILFAST: melempar pengecualian saat menemui catatan yang rusak.
  • columnNameOfCorruptRecord (defaultnya adalah nilai yang ditentukan dalam spark.sql.columnNameOfCorruptRecord): memungkinkan penggantian nama bidang baru yang memiliki string cacat yang dibuat oleh mode PERMISSIVE. Ini menggantikan spark.sql.columnNameOfCorruptRecord.
  • inferSchema (default true): jika true, mencoba menyimpulkan jenis yang sesuai untuk setiap atribut yang dihasilkan, seperti jenis boolean, numerik, atau tanggal. Jika false, semua kolom yang dihasilkan berjenis string.
  • prefersDecimal (falsedefault ): menyimpulkan semua nilai floating-point sebagai jenis desimal. Jika nilai tidak pas dalam desimal, maka dianggap sebagai double.
  • attributePrefix (default _): Awalan untuk atribut untuk membedakan atribut dari elemen. Ini akan menjadi awalan untuk nama bidang. Dapat berupa string kosong.
  • valueTag (default _VALUE): Tag yang digunakan untuk data karakter dalam elemen yang juga memiliki elemen atribut atau elemen turunan.
  • encoding (default UTF-8): mendekode file XML dengan jenis pengodean yang ditentukan.
  • ignoreSurroundingSpaces (default true): Menentukan apakah spasi kosong di sekitarnya dari nilai yang dibaca harus dilewati.
  • rowValidationXSDPath: Jalur ke file XSD yang digunakan untuk memvalidasi XML untuk setiap baris satu per satu. Baris yang gagal divalidasi diperlakukan seperti kesalahan parse seperti di atas. XSD tidak memengaruhi skema yang disediakan atau disimpulkan dengan cara lain.
  • ignoreNamespace (default false): Jika true, awalan namespace pada elemen dan atribut XML diabaikan. <abc:author> Tag dan <def:author> akan, misalnya, diperlakukan seolah-olah keduanya hanya <author>. Perhatikan bahwa namespace tidak dapat diabaikan pada rowTag elemen , hanya turunannya. Perhatikan bahwa penguraian XML pada umumnya tidak mendukung namespace, bahkan jika nilainya adalah false.
  • timestampFormat (default yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): mengatur string yang menyatakan format stempel waktu. Format tanggal kustom mengikuti format pada pola Tanggalwaktu. Ini berlaku untuk jenis stempel waktu.
  • timestampNTZFormat (default yyyy-MM-dd'T'HH:mm:ss[.SSS]): mengatur string yang menunjukkan tanda waktu tanpa format zona waktu. Format tanggal kustom mengikuti format pada pola Tanggalwaktu. Ini berlaku untuk jenis TimestampNTZType.
  • dateFormat (default yyyy-MM-dd): mengatur string yang menunjukkan format tanggal. Format tanggal kustom mengikuti format pada pola Tanggalwaktu. Ini berlaku untuk jenis tanggal.
  • locale (defaultnya adalah en-US): mengatur lokal sebagai tag bahasa dalam format IETF BCP 47. Misalnya, ini digunakan saat mengurai tanggal dan stempel waktu.
  • nullValue (defaultnya adalah null): Mengatur representasi string dari nilai null.

Saat opsi mode diatur ke FAILFAST, Azure Databricks menaikkan MALFORMED_RECORD_IN_PARSING jika input tidak sesuai dengan skema.

Kondisi kesalahan umum

Contoh

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

> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'VARIANT');
 {"p":{"a":1,"b":0.8}}

> SELECT from_xml('not xml', 'a INT', map('mode', 'FAILFAST'));
  Error: MALFORMED_RECORD_IN_PARSING