Bagikan melalui


Ganti nama dan letakkan 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.

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 Tabel Langsung Delta. Untuk detailnya, lihat Streaming dengan pemetaan kolom dan perubahan skema.

Mengaktifkan pemetaan kolom

Pemetaan kolom memerlukan protokol Delta berikut:

  • Pembaca versi 2 atau lebih tinggi.
  • Penulis 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 ada di Pratinjau Umum di Databricks Runtime 13.3 LTS ke atas.

Anda dapat menyediakan lokasi pelacakan skema untuk mengaktifkan streaming dari tabel Delta dengan pemetaan kolom diaktifkan. Ini mengatasi masalah di mana perubahan skema non-aditif dapat mengakibatkan aliran rusak.

Setiap streaming yang dibaca terhadap sumber data harus memiliki yang ditentukan sendiri schemaTrackingLocation . Yang ditentukan schemaTrackingLocation harus dimuat dalam direktori yang ditentukan untuk checkpointLocation tabel target untuk 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.

Perintah DROP FEATURE memerlukan versi protokol yang lebih tinggi. Anda dapat menggunakan perintah berikut untuk meningkatkan versi pembaca tabel dan penulis, yang memungkinkan Anda untuk menghilangkan pemetaan kolom dan menurunkan tingkat protokol:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.minReaderVersion' = '3',
    'delta.minWriterVersion' = '7'
  )

Lihat Menghilangkan fitur tabel Delta.