Topik Lanjutan AUTO CDC

Halaman ini membahas topik tingkat lanjut untuk bekerja dengan AUTO CDC tabel target dan AUTO CDC FROM SNAPSHOT , termasuk operasi DML, membaca umpan data perubahan, dan memantau metrik pemrosesan. Untuk pengenalan AUTO CDC API, lihat API CDC OTOMATIS: Menyederhanakan perubahan pengambilan data dengan alur.

Menambahkan, mengubah, atau menghapus data dalam tabel streaming target

Jika pipeline Anda menerbitkan tabel ke Unity Catalog, Anda dapat menggunakan pernyataan bahasa manipulasi data (DML), termasuk pernyataan insert, update, delete, dan merge, untuk memodifikasi tabel streaming target yang dibuat oleh pernyataan AUTO CDC ... INTO.

Nota

  • Pernyataan DML yang mengubah skema tabel tabel streaming tidak didukung. Pastikan bahwa pernyataan DML Anda tidak mencoba mengembangkan skema tabel.
  • Pernyataan DML yang memperbarui tabel streaming hanya dapat dijalankan di kluster Unity Catalog bersama atau gudang SQL menggunakan Databricks Runtime 13.3 LTS ke atas.
  • Karena streaming memerlukan sumber data khusus tambahan, jika pemrosesan Anda memerlukan streaming dari tabel streaming sumber dengan perubahan (misalnya, menurut pernyataan DML), atur bendera skipChangeCommits saat membaca tabel streaming sumber. Saat skipChangeCommits diatur, transaksi yang menghapus atau mengubah rekaman pada tabel sumber diabaikan. Jika pemrosesan Anda tidak memerlukan tabel streaming, Anda dapat menggunakan pandangan materialisasi (yang tidak memiliki batasan hanya-menambahkan) sebagai tabel target.

Karena Alur Deklaratif Lakeflow Spark menggunakan kolom tertentu dan menyebarluaskan nilai pengurutan yang sesuai ke kolom __START_AT dan __END_AT dari tabel target (untuk SCD Tipe 2), Anda harus memastikan bahwa pernyataan DML menggunakan nilai yang valid untuk kolom tersebut agar dapat mempertahankan urutan rekaman yang tepat. Lihat Cara kerja CDC OTOMATIS.

Untuk informasi selengkapnya tentang menggunakan pernyataan DML dengan tabel streaming, lihat Menambahkan, mengubah, atau menghapus data dalam tabel streaming.

Contoh berikut menyisipkan rekaman aktif dengan urutan awal 5:

INSERT INTO my_streaming_table (id, name, __START_AT, __END_AT) VALUES (123, 'John Doe', 5, NULL);

Petunjuk / Saran

Jika Anda perlu mengganti nama __START_AT kolom dan __END_AT dalam tabel target SCD Tipe 2 Anda (misalnya, untuk mencocokkan persyaratan skema hilir), buat tampilan di atas tabel target:

CREATE VIEW my_employees_view AS
SELECT
  *,
  __START_AT AS valid_from,
  __END_AT AS valid_to
FROM my_scd2_target_table;

Membaca umpan data perubahan dari tabel target CDC OTOMATIS

Di Databricks Runtime 15.2 ke atas, Anda dapat membaca umpan data perubahan dari tabel streaming yang merupakan target AUTO CDC atau AUTO CDC FROM SNAPSHOT kueri dengan cara yang sama seperti Anda membaca umpan data perubahan dari tabel Delta lainnya. Berikut ini diperlukan untuk membaca umpan data perubahan dari tabel streaming target:

  • Tabel streaming target harus diterbitkan ke Katalog Unity. Lihat Menggunakan Unity Catalog dengan alur.
  • Untuk membaca umpan data perubahan dari tabel streaming target, Anda harus menggunakan Databricks Runtime 15.2 atau lebih tinggi. Untuk membaca umpan data perubahan dalam alur yang berbeda, alur harus dikonfigurasi untuk menggunakan Databricks Runtime 15.2 atau lebih tinggi.

Anda membaca umpan data perubahan dari tabel streaming target yang dibuat di Lakeflow Spark Declarative Pipelines dengan cara yang sama seperti membaca umpan data perubahan dari tabel Delta lainnya. Untuk mempelajari selengkapnya tentang menggunakan fungsionalitas umpan data perubahan Delta, termasuk contoh di Python dan SQL, lihat Menggunakan umpan data perubahan Delta Lake di Azure Databricks.

Nota

Rekaman umpan data perubahan mencakup metadata yang mengidentifikasi jenis peristiwa perubahan. Saat rekaman diperbarui dalam tabel, metadata untuk rekaman perubahan terkait biasanya menyertakan _change_type nilai yang dikonfigurasi menjadi update_preimage dan peristiwa update_postimage.

Namun, _change_type nilainya berbeda jika pembaruan dilakukan pada tabel streaming target yang menyertakan perubahan nilai kunci utama. Saat perubahan menyertakan pembaruan pada kunci primer, _change_type bidang metadata diatur ke insert dan delete peristiwa. Perubahan pada kunci primer dapat terjadi ketika pembaruan manual dilakukan pada salah satu kolom kunci dengan perintah UPDATE atau MERGE, untuk tabel SCD tipe 2, ketika kolom __start_at berubah untuk mencerminkan nilai urutan mulai sebelumnya.

Kueri AUTO CDC menentukan nilai kunci utama, yang berbeda untuk pemrosesan SCD tipe 1 dan SCD tipe 2:

Jenis SCD Kunci utama
SCD jenis 1, dan antarmuka alur Python Kunci primer adalah nilai keys parameter dalam create_auto_cdc_flow() fungsi . Untuk antarmuka SQL, kunci primer adalah kolom yang ditentukan oleh KEYS klausa dalam AUTO CDC ... INTO pernyataan.
SCD tipe 2 Kunci utama adalah parameter keys atau klausul KEYS ditambah dengan nilai pengembalian dari operasi coalesce(__START_AT, __END_AT), di mana __START_AT dan __END_AT adalah kolom yang sesuai dari tabel streaming target.

Mendapatkan data tentang rekaman yang diproses oleh kueri CDC dalam alur

Nota

Metrik berikut hanya diambil oleh AUTO CDC kueri dan bukan oleh AUTO CDC FROM SNAPSHOT kueri.

Metrik berikut diambil oleh AUTO CDC kueri:

  • num_upserted_rows: Jumlah baris output yang di-upsert ke dalam himpunan data selama pembaruan.
  • num_deleted_rows: Jumlah baris output yang ada yang dihapus dari himpunan data selama pembaruan.

Metrik num_output_rows, keluaran untuk alur non-CDC, tidak diambil untuk kueri AUTO CDC.

Objek data apa yang digunakan untuk pemrosesan CDC dalam pipeline?

Saat Anda mendeklarasikan tabel target di metastore Apache Hive, dua struktur data dibuat:

  • Tampilan yang menggunakan nama yang diberikan ke tabel target.
  • Tabel dukungan internal yang digunakan oleh pipeline untuk mengelola pemrosesan CDC. Tabel ini dinamai dengan menambahkan __apply_changes_storage_ di awal sebelum nama tabel target.

Misalnya, jika Anda mendeklarasikan tabel target bernama dp_cdc_target, Anda akan melihat tampilan bernama dp_cdc_target dan tabel bernama __apply_changes_storage_dp_cdc_target di metastore. Kueri tampilan untuk mengakses data yang diproses. Jangan ubah tabel dasar secara langsung.

Nota

Struktur data ini hanya berlaku untuk AUTO CDC pemrosesan, bukan AUTO CDC FROM SNAPSHOT pemrosesan. Mereka juga hanya berlaku pada metastore Hive, bukan Katalog Unity.