Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
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: EkspresiSTRINGyang menentukan satu rekaman XML -
schema: EkspresiSTRINGatau pemanggilanschema_of_xmlfungsi. -
options: Arahan penentuan harfiah opsionalMAP<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(defaultfalse): Apakah akan mengecualikan atribut dalam elemen. -
mode(defaultPERMISSIVE): memungkinkan mode untuk menangani catatan yang rusak selama penguraian.-
PERMISSIVE: ketika menemui catatan yang rusak, menempatkan string yang rusak ke dalam bidang yang dikonfigurasi olehcolumnNameOfCorruptRecord, dan menyetel bidang yang rusak menjadi null. Untuk menyimpan rekaman yang rusak, Anda dapat mengatur bidang jenis string bernamacolumnNameOfCorruptRecorddalam skema yang ditentukan pengguna. Jika skema tidak memiliki bidang, skema akan mengabaikan rekaman yang rusak selama penguraian. Saat menyimpulkan skema, secara implisit menambahkan bidangcolumnNameOfCorruptRecorddalam skema output. -
FAILFAST: melempar pengecualian saat menemui catatan yang rusak.
-
-
columnNameOfCorruptRecord(defaultnya adalah nilai yang ditentukan dalamspark.sql.columnNameOfCorruptRecord): memungkinkan penggantian nama bidang baru yang memiliki string cacat yang dibuat oleh modePERMISSIVE. Ini menggantikanspark.sql.columnNameOfCorruptRecord. -
inferSchema(defaulttrue): jikatrue, mencoba menyimpulkan jenis yang sesuai untuk setiap atribut yang dihasilkan, seperti jenis boolean, numerik, atau tanggal. Jikafalse, 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(defaulttrue): 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(defaultfalse): Jikatrue, 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 padarowTagelemen , hanya turunannya. Perhatikan bahwa penguraian XML pada umumnya tidak mendukung namespace, bahkan jika nilainya adalah false. -
timestampFormat(defaultyyyy-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(defaultyyyy-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(defaultyyyy-MM-dd): mengatur string yang menunjukkan format tanggal. Format tanggal kustom mengikuti format pada pola Tanggalwaktu. Ini berlaku untuk jenis tanggal. -
locale(defaultnya adalahen-US): mengatur lokal sebagai tag bahasa dalam format IETF BCP 47. Misalnya, ini digunakan saat mengurai tanggal dan stempel waktu. -
nullValue(defaultnya adalahnull): 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