Pelacakan baris di Azure Databricks

Tersedia di Databricks Runtime 14.1 ke atas, pelacakan baris menetapkan ID baris yang stabil dan versi penerapan baris ke setiap baris, memungkinkan pelacakan silsilah baris. Beberapa pembaruan inkremental untuk tampilan materialisasi memerlukan fitur ini.

Semua tabel Apache Iceberg v3 menyertakan pelacakan baris. Lihat Menggunakan fitur Apache Iceberg v3. Untuk tabel Delta Lake, Anda harus secara eksplisit mengaktifkan pelacakan baris.

Note

Mengaktifkan pelacakan baris meningkatkan protokol penulis tabel dan dapat memengaruhi kompatibilitas dengan klien Delta Lake eksternal. Lihat Kompatibilitas dan protokol fitur Delta Lake.

Mengaktifkan pelacakan baris pada tabel Delta Lake

Untuk mengaktifkan pelacakan baris pada tabel Delta Lake, atur properti delta.enableRowTracking = true tabel selama pembuatan tabel:

CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;

Untuk mengaktifkan pelacakan baris pada tabel Delta Lake yang sudah ada, gunakan contoh berikut:

ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);

Important

Mengaktifkan pelacakan baris pada tabel yang ada secara otomatis menerapkan ID baris dan versi komit baris ke semua baris yang sudah ada dalam tabel. Proses ini dapat mengakibatkan pembuatan beberapa versi baru tabel dan membutuhkan waktu yang cukup lama untuk diselesaikan.

Peringatan

Jika tabel Anda adalah target untuk penulisan berkelanjutan, seperti beban kerja Streaming Terstruktur, jeda operasi tulis sebelum mengaktifkan pelacakan baris dan melanjutkan setelah operasi selesai. Menggunakan ALTER TABLE untuk mengaktifkan pelacakan baris akan memperbarui metadata tabel, sehingga setiap operasi penulisan serentak gagal dengan MetadataChangedException selama operasi berlangsung. Lihat Pengecualian konflik.

Mengkloning tabel membuat riwayat terpisah, sehingga ID baris dan versi penerapan baris pada tabel kloning tidak cocok dengan yang ada di tabel asli.

Bidang metadata

Pelacakan baris menambahkan dua bidang metadata tersembunyi ke tabel. Anda bisa secara eksplisit menambahkan bidang ini ke kueri Anda untuk mengembalikan nilai.

Nama kolom Type Values Explanation
_metadata.row_id Long Pengidentifikasi baris yang unik. Baris menyimpan ID yang sama setiap kali dimodifikasi menggunakan pernyataan MERGE atau UPDATE.
_metadata.row_commit_version Long Log Delta atau versi tabel tempat baris terakhir disisipkan atau diperbarui. Baris diberikan versi baru setiap kali dimodifikasi menggunakan pernyataan MERGE atau UPDATE.

Beberapa operasi menyimpan bidang metadata ini menggunakan log transaksi. Menjalankan perintah OPTIMIZE atau REORG pada tabel dengan pelacakan baris diaktifkan menulis ulang file data untuk menyimpan elemen-elemen ini.

Menonaktifkan pelacakan baris pada tabel Delta Lake

Untuk menonaktifkan pelacakan baris pada tabel Delta Lake, atur properti tabel ke false.

ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);

Important

Menonaktifkan pelacakan baris tidak menghapus fitur tabel yang sesuai dan tidak menurunkan versi protokol tabel. Ini juga tidak menghapus bidang metadata dari tabel target. Untuk sepenuhnya menghapus fitur tabel dan menurunkan tingkat protokol, gunakan DROP FEATURE. Lihat Menghilangkan fitur tabel Delta Lake dan menurunkan protokol tabel.

Setelah menonaktifkan pelacakan baris, ID baris yang dihasilkan tidak lagi dapat diandalkan untuk melacak baris unik.

Keterbatasan

ID baris dan bidang metadata versi penerapan baris tidak dapat diakses saat membaca umpan data perubahan. Lihat Menggunakan umpan data perubahan pada Azure Databricks.