Snowflake MigrationClickHouse Workshops
Worksheet perencanaan

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:

  1. Materialisasi — objek fisik mana yang dibuat dbt (view, table, incremental, ephemeral)?
  2. Konfigurasi engine — untuk model table dan incremental, engine ClickHouse mana dan kolom versi mana?
  3. Strategi inkremental — untuk model incremental, bagaimana dbt menangani baris baru/yang diperbarui?

Ada juga satu soal kebenaran hasil yang khas ReplacingMergeTree:

  1. Penempatan FINAL — di bagian mana dari DAG dbt FINAL diletakkan 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: completed

Di halaman ini

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

ID