Snowflake MigrationClickHouse Workshops

04 Bangun ulang pipeline dbt

Panduan fasilitator untuk membangun ulang pipeline dbt di ClickHouse — mengapa tabel agregat yang kosong bukan bug.

Pendamping fasilitator untuk pelajaran learner 04 Bangun ulang pipeline dbt.

Waktu

Sekitar 30 menit. Satu-satunya rentang dengan waktu kosong nyata adalah dbt run kedua di Step 1 (sekitar 8-12 menit untuk memproses 50 juta baris melalui model inkremental) — cukup singkat sehingga biasanya tidak perlu istirahat tersendiri, tetapi cukup panjang untuk dinarasikan alih-alih ditonton dalam diam. Step 2 (dictionary zona) dan query verifikasinya cepat dan interaktif.

Alur pembicaraan

  • Posisikan modul ini sebagai pembuktian pipeline, bukan data: modul 03 membuktikan ClickHouse bisa menampung 50 juta baris; modul ini membuktikan pipeline Medallion yang sama dari modul 01 — staging view, tabel fakta inkremental, muat ulang dimensi, test — berjalan dengan bentuk yang tidak berubah di ClickHouse.
  • Satu mekanisme dbt yang layak dijeda untuk dibahas: delete_insert menggantikan MERGE INTO (ClickHouse tidak punya pernyataan MERGE), dan ReplacingMergeTree adalah jaring pengaman di bawahnya, bukan penggantinya — jika delete_insert selesai normal maka tidak ada yang perlu dibersihkan RMT; ia hanya penting jika sebuah run terputus di tengah jalan.
  • mv_live_trip_feed layak disebut secara khusus: ia tidak punya padanan Snowflake sama sekali. Sebuah materialized view standar hanya pernah melihat baris dalam batch yang memicunya; sebuah materialized view REFRESHABLE menjalankan ulang seluruh query-nya sesuai jadwal, sehingga ia bisa memelihara agregat sepanjang masa. Ini kapabilitas baru yang ditambahkan migrasi, bukan porting langsung.
  • Katakan ini sebelum ada yang bertanya: agg_hourly_zone_trips akan kosong setelah dbt run di Step 1, dan itu benar, bukan bug. Filter inkrementalnya adalah WHERE pickup_at >= now() - INTERVAL 2 HOUR, yang hanya cocok dengan baris yang ditulis oleh producer live; setiap baris yang baru dimigrasikan adalah historis. Ia tetap kosong sampai modul 05 memulai producer ClickHouse pada cutover. Partner secara konsisten mengira ini pipeline yang rusak — dahului pertanyaannya.

Kegagalan umum

  • agg_hourly_zone_trips mengembalikan 0 baris setelah Step 1, dan partner melaporkannya sebagai bug. Bukan bug — lihat alur pembicaraan di atas. Konfirmasi dim_taxi_zones (265 baris) dan fact_trips (sekitar 50 juta baris) terisi sesuai harapan sebelum menghabiskan waktu untuk agg_hourly_zone_trips; jika keduanya benar, tabel agregat yang kosong itu bekerja tepat seperti yang dirancang. Ini kegagalan utama modul ini — harapkan pertanyaan ini setiap kali.
  • dbt run di Step 1 gagal atau tidak bisa terhubung. Modul ini bergantung pada profil dbt ClickHouse yang seharusnya sudah dibuat modul 03 (~/.dbt/profiles.yml, nyc_taxi_ch). Jika profil itu hilang — lihat "Configure the dbt profile" pada Step 2 di 03 Provisioning dan migrasi — Step 1 gagal di sini, satu modul setelah akar masalahnya.
  • TODO: bagian ## dbt on ClickHouse di halaman Troubleshooting situs ini tidak punya entri khusus untuk kegagalan yang muncul hanya pada langkah ini. Catat apa pun yang khas gladi bersih di sini.

Langkah reset

  • Jalankan ulang dbt run sesuka Anda — ia inkremental dan aman diulang; tidak ada di sini yang perlu teardown.
  • Setelah perubahan model atau skema dbt, paksa pembangunan ulang penuh model inkremental: dbt run --full-refresh (dari workshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/dbt/nyc_taxi_dbt_ch).
  • Jika dictionary zona terlihat salah atau basi, cukup jalankan ulang scripts/04_create_dictionary.sql — ia berupa CREATE OR REPLACE DICTIONARY, aman dijalankan lagi tanpa perlu men-drop apa pun lebih dulu.
  • Tidak ada reset tingkat lingkungan yang berlaku di sini — teardown modul ini adalah workshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/teardown.sh yang sama yang dibahas di modul 03; jangan menjalankannya di tengah modul.

Di halaman ini

ID