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_insertmenggantikanMERGE INTO(ClickHouse tidak punya pernyataanMERGE), danReplacingMergeTreeadalah jaring pengaman di bawahnya, bukan penggantinya — jikadelete_insertselesai normal maka tidak ada yang perlu dibersihkan RMT; ia hanya penting jika sebuah run terputus di tengah jalan. mv_live_trip_feedlayak 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_tripsakan kosong setelahdbt rundi Step 1, dan itu benar, bukan bug. Filter inkrementalnya adalahWHERE 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_tripsmengembalikan 0 baris setelah Step 1, dan partner melaporkannya sebagai bug. Bukan bug — lihat alur pembicaraan di atas. Konfirmasidim_taxi_zones(265 baris) danfact_trips(sekitar 50 juta baris) terisi sesuai harapan sebelum menghabiskan waktu untukagg_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 rundi 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 ClickHousedi 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 runsesuka 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(dariworkshop_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 berupaCREATE 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.shyang sama yang dibahas di modul 03; jangan menjalankannya di tengah modul.
03 Provisioning dan migrasi
Panduan fasilitator untuk modul provisioning ClickHouse dan migrasi — transfer tanpa pengawasan 40 sampai 50 menit dan profil dbt yang hilang.
05 Benchmark dan cutover
Panduan fasilitator untuk benchmark dan cutover — penutupan selisih dua tahap, jebakan impor dashboard, dan urutan teardown.