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.
Anda dapat menentukan kolasi pada bidang string dalam tabel Delta untuk mengatur perilaku perbandingan string dan pengurutan, seperti mengaktifkan pencocokan yang tidak peka terhadap huruf besar/kecil atau urutan yang sesuai lokal. Ini membutuhkan Databricks Runtime 16.4 LTS ke atas.
Untuk penjelasan lengkap tentang jenis kolase, konvensi penamaan, dan aturan prioritas, lihat Kolase.
Secara default, Delta Lake mengatur kolase untuk bidang string ke UTF8_BINARY.
Penting
Mengaktifkan pengurutan menambahkan fitur tabel penulis ke tabel Delta Anda, yang memengaruhi kompatibilitas dengan pembaca eksternal dan fitur platform lainnya. Tinjau bagian Batasan sebelum mengaktifkan kolade pada tabel produksi.
Membuat tabel dengan kolajek
Anda dapat menentukan pengurutan pada tingkat kolom saat membuat tabel baru. Kolase dapat diterapkan ke kolom string tingkat atas dan bidang string di dalam jenis berlapis:
CREATE TABLE catalog.schema.my_table (
id BIGINT,
name STRING COLLATE UTF8_LCASE,
metadata STRUCT<label: STRING COLLATE UNICODE>,
tags ARRAY<STRING COLLATE UTF8_LCASE>,
properties MAP<STRING, STRING COLLATE UTF8_LCASE>
) USING delta
Nota
MAP kunci tidak dapat menggunakan kolasi. Hanya MAP nilai yang mendukung string yang diurutkan.
Mengubah kolase pada kolom yang sudah ada
Anda dapat mengubah pengaturan pengurutan kolom yang sudah ada menggunakan ALTER TABLE:
-- Set a column to case-insensitive collation
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_LCASE
-- Revert a column to the default binary collation
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_BINARY
Memperbarui statistik dan tata letak data setelah mengubah kolase
Mengubah kolagasi kolom tidak menulis ulang data yang ada atau memperbarui statistik. Kueri segera mengembalikan hasil yang benar di bawah kolasi baru, tetapi pengabaian file dan pengklusteran mungkin kurang efektif sampai Anda mengikuti langkah-langkah berikut:
- Perbarui statistik lompati file untuk kolom:
ANALYZE TABLE my_table COMPUTE DELTA STATISTICS
- Jika tabel Anda menggunakan pengklusteran cair, tulis ulang tata letak pengklusteran:
OPTIMIZE FULL my_table
- Jika tabel Anda menggunakan ZORDER, nonaktifkan pengoptimalan bertahap dan tulis ulang semua file:
SET spark.databricks.optimize.incremental = false;
OPTIMIZE my_table ZORDER BY zorder_column;
Melewati langkah-langkah ini tidak akan menyebabkan hasil yang salah, tetapi mungkin mengurangi performa kueri pada data historis hingga penulisan ulang lengkap berikutnya.
Pengurutan selalu diperhatikan oleh Azure Databricks dalam hasil kueri.
Menonaktifkan kolatasi untuk tabel
Untuk menghapus fitur tabel kolase, pertama-tama atur setiap kolom yang disatukan kembali ke UTF8_BINARY:
-- Repeat for each collated column
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_BINARY
Kemudian hapus tabel:
ALTER TABLE my_table DROP FEATURE collations
Lihat Menghilangkan fitur tabel Delta Lake dan menurunkan protokol tabel untuk detail selengkapnya.
Evolusi dan kolasi skema
Saat perubahan skema menambahkan atau menggabungkan kolom yang memiliki pengurutan yang ditentukan, aturan berikut berlaku:
- Jika kolom sumber sudah ada dalam tabel target, kolase tabel target untuk kolom tersebut dipertahankan. Pengurutan kolom sumber diabaikan.
- Jika kolom sumber baru dan memiliki kolate yang ditentukan, tabel target mengadopsi kolate tersebut untuk kolom baru.
- Jika tabel target belum memiliki fitur tabel
collationsyang diaktifkan, menambahkan kolom dengan urutan tertentu akan mengaktifkannya secara otomatis.
Keterbatasan
Batasan berikut berlaku untuk tabel Delta dengan kolase diaktifkan:
Kompatibilitas dan interoperabilitas:
- Pembaca eksternal yang tidak mengenali
collationsfitur tabel beralih keUTF8_BINARY, yang mungkin menghasilkan urutan atau pembandingan yang salah. - Berbagi Delta tidak mendukung pembagian partisi individual pada kolom pengurutan non-default. Bagikan tabel sebagai gantinya.
- UniForm tidak didukung untuk tabel dengan pengurutan.
- Tabel Delta yang dibuat secara eksternal dengan pengurutan yang tidak dikenali oleh Databricks Runtime akan menimbulkan pengecualian disaat dikueri.
- OSS Delta Lake API untuk Scala atau Python tidak mendukung kolaterasi. Gunakan API Spark SQL atau DataFrame.
Pembatasan kueri dan fitur:
- Kolom kolase tidak dapat digunakan dalam
CHECKbatasan - Kolom yang digabungkan tidak dapat direferensikan dalam ekspresi kolom yang dihasilkan.
- Kolom yang diurutkan tidak dapat digunakan dengan indeks filter bloom (tidak digunakan lagi)
- Kolom kolase tidak dapat direferensikan dalam kueri stateful Streaming Terstruktur (agregasi, gabungan, deduplikasi)
- Kunci
MAPtidak dapat menjadi string yang disatukan. HanyaMAPnilai yang mendukung kolaset