Kapan menggunakan REPLACE WHERE vs. materialized views

Baik alur REPLACE WHERE maupun materialized view mandiri memungkinkan Anda mempertahankan tabel turunan yang tetap mutakhir saat data sumber berubah, tetapi keduanya menyelesaikan masalah yang berbeda. Untuk sebagian besar beban batch extract, transform, and load (ETL) yang secara berkala menimpa jendela waktu atau partisi, gunakan alur REPLACE WHERE inkremental. Gunakan materialized views untuk lapisan percepatan kueri yang menyajikan hasil yang sudah dihitung ke dashboard dan laporan.

Halaman ini membahas tabel streaming mandiri dan view termaterialisasi. Untuk aliran REPLACE WHERE dalam pipeline Lakeflow, lihat Pemrosesan batch dengan aliran REPLACEWHERE.

Gunakan REPLACE WHERE untuk penimpaan batch

REPLACE WHERE alur hanya menghitung ulang dan menimpa baris yang sesuai dengan predikat, seperti jendela waktu atau partisi. Semua baris lainnya tetap tidak berubah. Karena alur mengevaluasi ulang kueri sumber hanya untuk rentang predikat tersebut, biaya setiap penyegaran bergantung pada ukuran rentang, bukan ukuran tabel.

Materialized view mempertahankan hasil penuh dari kueri definisinya. Azure Databricks menyegarkan tampilan terwujud secara bertahap ketika kueri dan data sumber mendukungnya, dan selain itu menjalankan penyegaran penuh. Apakah penyegaran bersifat inkremental tergantung pada struktur kueri dan tabel sumber, sehingga biaya setiap penyegaran lebih sulit diprediksi. Lihat Bagaimana tampilan materialisasi mandiri disegarkan?.

Untuk model data batch ETL yang berubah dalam rentang baris yang dibatasi, alur REPLACE WHERE memungkinkan Anda mengontrol dengan tepat baris mana yang ditulis ulang oleh setiap penyegaran. Materialized view lebih cocok ketika pembaca membutuhkan akses cepat ke hasil yang sudah dihitung sebelumnya.

Memetakan konstruksi ke lapisan medallion

Tabel berikut memetakan setiap lapisan arsitektur medallion ke konstruksi yang direkomendasikan Databricks:

Lapisan Membangun Mengapa
Perunggu (ingesti mentah) Ingesti dengan Lakeflow Connect atau Auto Loader Memuat catatan mentah secara bertahap saat tiba, tanpa memproses ulang riwayat.
Perak (fakta) Alur REPLACE WHEREbertahap Hanya menimpa jendela waktu atau partisi yang terdampak untuk pembaruan fakta, data yang datang terlambat, dan koreksi.
Silver (dimensi) AUTO CDC aliran Menerapkan semantik sisipkan, pembaruan, dan hapus secara otomatis serta mempertahankan riwayat dengan dimensi yang berubah perlahan (SCD) Tipe 1 atau Tipe 2.
Gold (agregasi dan model data) Alur REPLACE bertahapWHERE Menghitung ulang hanya rentang predikat untuk agregat dan model, menghindari perhitungan ulang full-table.
Percepatan dan penyajian kueri tampilan materialisasi Menyajikan hasil yang sudah dihitung ke dashboard dan laporan serta menjaga hasil kueri tetap terbaru.

Panduan keputusan

Gunakan panduan berikut untuk memilih antara kedua konstruk tersebut.

Gunakan alur REPLACE WHERE ketika Anda:

  • Jalankan penimpaan batch berkala pada jendela waktu atau partisi.
  • Perbaiki data yang terlambat masuk.
  • Terapkan penghapusan untuk kepatuhan pada rentang terbatas.
  • Segarkan data di tingkat partisi.

Gunakan materialized view ketika Anda:

  • Percepat kueri dashboard.
  • Menyajikan agregasi yang sudah dihitung kepada pembaca.
  • Jaga hasil kueri tetap terbaru untuk lapisan penyajian.

Contoh: timpa inkremental dengan REPLACE WHERE

Contoh berikut mendefinisikan tabel target yang hanya menimpa 7 hari terakhir data pada setiap penyegaran. Selama refresh, flow menghapus baris yang sesuai dengan predikat, menghitung ulang kueri sumber untuk rentang yang sama, dan memasukkan hasilnya. Baris di luar jendela dibiarkan tidak berubah:

CREATE OR REFRESH STREAMING TABLE payments_latest
FLOW REPLACE WHERE payment_date >= date_add(current_date(), -7) BY NAME
SELECT payment_id, booking_id, status, payment_date
FROM samples.wanderbricks.payments;

BY NAME diperlukan agar kolom sesuai dengan nama, bukan posisi. Untuk sintaks lengkap, penggantian predikat, pengisian ulang, dan perilaku penyegaran inkremental, lihat REPLACE WHERE alur untuk tabel streaming mandiri.

Sumber daya tambahan