Ganti nama dan hapus kolom dengan pemetaan kolom Delta Lake
Azure Databricks mendukung pemetaan kolom untuk tabel Delta Lake, yang memungkinkan perubahan khusus metadata untuk menandai kolom sebagai dihapus atau diganti namanya tanpa menulis ulang file data. Ini juga memungkinkan pengguna untuk memberi nama kolom tabel Delta menggunakan karakter yang tidak diizinkan oleh Parquet, seperti spasi, sehingga pengguna dapat langsung menyerap data CSV atau JSON ke Delta tanpa perlu mengganti nama kolom karena batasan karakter sebelumnya.
Penting
Tabel dengan pemetaan kolom yang diaktifkan hanya dapat dibaca di Databricks Runtime 10.4 LTS ke atas.
Tabel yang dipartisi dengan pemetaan kolom diaktifkan menggunakan awalan acak alih-alih nama kolom untuk direktori partisi. Lihat Apakah Danau Delta dan Parquet berbagi strategi pemartisian?.
Mengaktifkan pemetaan kolom pada tabel mungkin memecah operasi hilir yang mengandalkan umpan data perubahan Delta. Lihat Mengubah batasan umpan data untuk tabel dengan pemetaan kolom diaktifkan.
Mengaktifkan pemetaan kolom pada tabel mungkin merusak pembacaan streaming dari tabel Delta sebagai sumber, termasuk di DLT. Untuk detailnya, lihat Streaming dengan pemetaan kolom dan perubahan skema.
Mengaktifkan pemetaan kolom
Pemetaan kolom memerlukan protokol Delta berikut:
- Versi Pembaca 2 atau lebih tinggi.
- Aplikasi Writer versi 5 atau lebih tinggi.
Untuk tabel Delta dengan versi protokol yang diperlukan, Anda dapat mengaktifkan pemetaan kolom dengan mengatur delta.columnMapping.mode
ke name
.
Anda bisa menggunakan perintah berikut untuk mengaktifkan pemetaan kolom:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
Lihat Menonaktifkan pemetaan kolom.
Mengganti nama kolom
Catatan
Tersedia di Databricks Runtime 10.4 LTS ke atas.
Saat pemetaan kolom diaktifkan untuk tabel Delta, Anda dapat mengganti nama kolom:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Untuk contoh selengkapnya, lihat Memperbarui skema tabel Delta Lake.
Hilangkan kolom
Catatan
Tersedia di Databricks Runtime 11.3 LTS ke atas.
Saat pemetaan kolom diaktifkan untuk tabel Delta, Anda bisa menghilangkan satu atau beberapa kolom:
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)
Untuk detail selengkapnya, lihat Memperbarui skema tabel Delta Lake.
Karakter yang didukung dalam nama kolom
Saat pemetaan kolom diaktifkan untuk tabel Delta, Anda dapat menyertakan spasi dan salah satu karakter ini dalam nama kolom tabel: ,;{}()\n\t=
.
Streaming dengan pemetaan kolom dan perubahan skema
Penting
Fitur ini tersedia sebagai Pratinjau Umum di Databricks Runtime 13.3 LTS dan versi di atasnya.
Anda dapat menyediakan lokasi pelacakan skema untuk mengaktifkan streaming dari tabel Delta dengan pemetaan kolom yang diaktifkan. Ini mengatasi masalah di mana perubahan skema non-aditif dapat mengakibatkan aliran rusak.
Setiap pembacaan streaming terhadap sumber data harus memiliki schemaTrackingLocation
yang ditentukan sendiri. Yang ditentukan schemaTrackingLocation
harus berada di direktori yang ditentukan untuk checkpointLocation
tabel target dalam penulisan streaming.
Catatan
Untuk beban kerja streaming yang menggabungkan data dari beberapa tabel Delta sumber, Anda perlu menentukan direktori unik dalam checkpointLocation
untuk setiap tabel sumber.
Opsi schemaTrackingLocation
ini digunakan untuk menentukan jalur untuk pelacakan skema, seperti yang ditunjukkan dalam contoh kode berikut:
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)
Menonaktifkan pemetaan kolom
Di Databricks Runtime 15.3 ke atas, Anda dapat menggunakan DROP FEATURE
perintah untuk menghapus pemetaan kolom dari tabel dan menurunkan tingkat protokol tabel.
Lihat Fitur Hapus Tabel Delta.