Pada proyek penutup course ini kita merangkai seluruh materi menjadi satu sistem utuh: pipeline data end-to-end dari dua sumber berbeda sampai dashboard yang bisa dibuka siapa saja. TokoKita, toko kopi yang telah kita temui sejak proyek data warehouse, kini juga menjual lewat web sehingga ada dua sumber data yang harus didamaikan: ekspor pesanan dari basis data operasional (CSV) dan event kunjungan web dari event tracker (JSON Lines). Mesin pengolahan tetap DuckDB, dan seluruh angka pada dashboard berasal dari pipeline yang sama, bukan diketik manual. Materi pendukung terbesar ada pada section Data Engineering untuk Analytics.
Hasil akhir proyek ini berupa:
- pipeline enam tahap: kumpulkan, bersihkan, model, marts, validasi, ekspor,
- model analitik gaya dbt pada
models/(stagingstg_*, factfct_pesanan, martsmkt_*), - empat tabel analitik siap dashboard beserta ekspor CSV pada lapisan
data/gold/, - validasi delapan pemeriksaan termasuk hitung ulang GMV lewat jalur independen,
- dashboard statis yang membaca
data.jsonhasil ekspor pipeline — disajikan situs tutorial pada/proyek/dashboard-analitik/, dan - rangkaian pytest 55 uji yang lulus penuh.
Prasyarat #
Sebelum mulai, pastikan kita telah memahami chapter berikut karena keputusan desain proyek ini merujuk ke sana:
- Model Staging, Intermediate, dan Marts serta dbt — pola model berlapis yang kita adopsi pada
models/, - Data Marts dan Serving Data untuk Analytics — alasan tabel
mkt_*dibuat terpisah dari fact table, - Semantic Layer — definisi metrik sebagai berkas pada
models/metric_definitions.yaml, - Integrasi Business Intelligence — cara dashboard dan alat BI mengonsumsi tabel analitik,
- Idempotency dan Retries — prinsip yang diterapkan pada orkestrator
src/pipeline.py.
Seluruh kode berjalan pada Python 3.12 dengan DuckDB 1.5.6, pandas, dan pytest; tidak ada dependensi lain.
Struktur Proyek #
pipeline-data-dan-dashboard-analitik/
├── _index.md
├── part-1-menentukan-kebutuhan-dashboard/
├── part-2-mengumpulkan-data/
├── part-3-membersihkan-data/
├── part-4-merancang-model-analitik/
├── part-5-membangun-pipeline/
├── part-6-menyiapkan-tabel-analitik/
├── part-7-memvalidasi-hasil/
├── part-8-menghubungkan-dashboard/
├── part-9-mendokumentasikan-sistem/
├── data/
│ ├── raw/ (pesanan.csv + events.jsonl; sumber mentah)
│ ├── staging/ (hasil pembersihan + karantina; checkpoint pipeline)
│ ├── gold/ (CSV tabel analitik + laporan validasi; hasil pipeline)
│ ├── dashboard/ (index.html statis + data.json hasil ekspor pipeline)
│ └── analytics.duckdb (basis data analitik; dibangun ulang pipeline)
├── models/ (model SQL gaya dbt + definisi metrik)
├── src/ (collect, clean, models_runner, marts, export_dashboard,
│ validate, pipeline)
└── tests/ (rangkaian pytest untuk seluruh tahap)Folder data/, models/, src/, dan tests/ mengikuti daftar folder proyek pada manifest course. Folder data/dashboard/ di bawah data/ memuat data.json yang ditulis ulang oleh src/export_dashboard.py pada setiap eksekusi. Berkas index.html dashboard tidak disimpan di dalam content/ karena generator situs melarang berkas HTML mentah pada folder konten; salinannya disajikan situs dari static/proyek/dashboard-analitik/ dan dapat diunduh dari sana untuk dijalankan lokal di samping data.json.
Tahapan Pengerjaan #
Proyek dikerjakan dalam sembilan bagian berurutan. Setiap bagian menghasilkan artefak yang dapat dijalankan dan diuji:
- Bagian 1 menentukan kebutuhan dashboard: pertanyaan bisnis dan definisi metrik.
- Bagian 2 mengumpulkan data dari dua sumber: CSV pesanan dan JSONL event web.
- Bagian 3 membersihkan data: koersi tipe, deduplikasi, dan karantina.
- Bagian 4 merancang model analitik gaya dbt: staging dan fact.
- Bagian 5 membangun pipeline enam tahap yang idempoten.
- Bagian 6 menyiapkan tabel analitik
mkt_*dan lapisan gold. - Bagian 7 memvalidasi hasil lewat rekonsiliasi dan hitung ulang independen.
- Bagian 8 menghubungkan dashboard statis dan membahas koneksi alat BI.
- Bagian 9 mendokumentasikan sistem: diagram, runbook, dan kamus data.
Mulailah dari Bagian 1 dan ikuti urutannya karena setiap bagian dibangun di atas artefak bagian sebelumnya.
Kontrak Pengujian #
Dua perintah berikut menjadi bukti bahwa proyek sehat pada setiap tahap. Perintah pertama membangun ulang basis data analitik beserta seluruh tabel dan ekspor; perintah kedua menjalankan seluruh uji:
cd content/data-engineering/proyek/pipeline-data-dan-dashboard-analitik
python3 -m src.pipeline
python3 -m pytest tests/ -qKedua perintah tersebut dijalankan nyata pada Bagian 5 dan Bagian 7; keluarannya ditampilkan apa adanya, bukan karangan.
Ubah pertanyaan bisnis menjadi spesifikasi metrik yang mengikat sebelum satu tabel analitik pun dibangun.
Buka → # Bagian 2: Mengumpulkan DataBaca dua sumber berbeda karakter: ekspor pesanan CSV dan event web JSON Lines, tanpa mengubah isinya.
Buka → # Bagian 3: Membersihkan DataKoersi tipe, normalisasi status, deduplikasi, dan karantina beralasan untuk kedua sumber data.
Buka → # Bagian 4: Merancang Model AnalitikSusun model berlapis gaya dbt: tabel sumber, staging, dan fact dengan grain satu baris item pesanan.
Buka → # Bagian 5: Membangun PipelineRangkai enam tahap menjadi satu orkestrator idempoten yang dibangun ulang dari nol setiap eksekusi.
Buka → # Bagian 6: Menyiapkan Tabel AnalitikMaterialisasi empat mart agregat (mkt_*) dan sajikan lapisan gold untuk konsumen di luar DuckDB.
Buka → # Bagian 7: Memvalidasi HasilRekonsiliasi baris dan hitung ulang metrik lewat jalur independen, dengan gerbang yang membatalkan pipeline.
Buka → # Bagian 8: Menghubungkan DashboardEkspor muatan data.json dari tabel analitik dan sambungkan dashboard statis yang bisa dibuka tanpa server database.
Buka → # Bagian 9: Mendokumentasikan SistemTutup proyek dengan diagram sistem, runbook operasional, kamus data, dan panduan memperluas.
Buka →