Worksheet 5: Desain model dbt
Konfigurasikan materialisasi, engine, dan strategi inkremental untuk setiap model dbt, dengan umpan balik langsung pada setiap jawaban.
Perkiraan waktu: 15–20 menit Referensi: dbt di ClickHouse
Konsep
Worksheet 1–4 menghasilkan apa-nya: engine mana, ORDER BY mana, tipe ClickHouse mana. Worksheet ini menghasilkan bagaimana-nya: bagaimana keputusan itu diungkapkan sebagai konfigurasi dbt sebelum menulis SQL apa pun.
Sebuah model dbt-clickhouse punya tiga lapisan konfigurasi yang tidak perlu dipikirkan developer Snowflake:
- Materialisasi — objek fisik mana yang dibuat dbt (view, table, incremental, ephemeral)?
- Konfigurasi engine — untuk model table dan incremental, engine ClickHouse mana dan kolom versi mana?
- Strategi inkremental — untuk model incremental, bagaimana dbt menangani baris baru/yang diperbarui?
Ada juga satu soal kebenaran hasil yang khas ReplacingMergeTree:
- Penempatan FINAL — di bagian mana dari DAG dbt
FINALdiletakkan untuk menjamin pembacaan yang terdeduplikasi?
Gunakan pohon keputusan ini untuk materialisasi:
- Pembacaan insert-only dari sebuah source, tanpa tulisan ke model itu sendiri? →
view - Murni logika join, tidak di-query secara langsung? →
ephemeral - Bangun ulang penuh pada setiap eksekusi dbt, tanpa update parsial? →
table - Hanya baris baru/berubah yang diproses per eksekusi? →
incremental
Model staging selalu berupa view — aturan yang sama dari Worksheet 1. stg_trips dan
stg_taxi_zones adalah pembacaan passthrough tanpa tulisan miliknya sendiri, jadi keduanya tetap view
tanpa memandang bagaimana perilaku data sumbernya.
Latihan 1: Pemilihan materialisasi
Untuk setiap model, pilih materialisasi dbt yang benar, lalu jawab alasannya di pertanyaan di bawah tabel.
Latihan 2: Konfigurasi engine
Hanya model dengan materialisasi table atau incremental yang butuh engine ClickHouse —
view dan model ephemeral tidak punya engine. Rujuk jawaban Worksheet 1 Anda: konfigurasi engine
dbt adalah implementasi dari keputusan engine yang sudah Anda buat di sana.
Latihan 3: Desain strategi inkremental
Untuk setiap model incremental, rancang konfigurasi inkremental lengkapnya: unique_key,
incremental_strategy, dan filter SQL yang masuk ke dalam blok penjaga is_incremental():
{% if is_incremental() %}
WHERE <your filter here>
{% endif %}Latihan 4: Penempatan FINAL
Deduplikasi ReplacingMergeTree bersifat asinkron. FINAL memaksanya saat baca — tetapi
menempatkan FINAL di model yang salah membawa konsekuensi kebenaran hasil atau performa. Untuk setiap
model di bawah, jawab apakah FINAL memang termasuk di klausa FROM model itu sendiri.
Loading worksheet...
Pindahkan ke migration-plan.md
Setelah Anda menyelesaikan worksheet ini, isi Bagian 10 dari migration-plan.md dengan
jawaban Anda dan centang:
- [ ] dbt model design: completedWorksheet 4: Rencana gelombang migrasi
Urutkan sepuluh objek NYC Taxi ke dalam gelombang migrasi dan beri nilai kompleksitas masing-masing, dengan umpan balik langsung pada setiap jawaban.
03 Provisioning dan migrasi
Provisioning ClickHouse Cloud dengan Terraform, buat tabel target dari rencana Anda, dan pindahkan 50 juta baris dengan skrip migrasi Python yang dapat dilanjutkan.