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/ (staging stg_*, fact fct_pesanan, marts mkt_*),
  • 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.json hasil 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 #

text
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:

  1. Bagian 1 menentukan kebutuhan dashboard: pertanyaan bisnis dan definisi metrik.
  2. Bagian 2 mengumpulkan data dari dua sumber: CSV pesanan dan JSONL event web.
  3. Bagian 3 membersihkan data: koersi tipe, deduplikasi, dan karantina.
  4. Bagian 4 merancang model analitik gaya dbt: staging dan fact.
  5. Bagian 5 membangun pipeline enam tahap yang idempoten.
  6. Bagian 6 menyiapkan tabel analitik mkt_* dan lapisan gold.
  7. Bagian 7 memvalidasi hasil lewat rekonsiliasi dan hitung ulang independen.
  8. Bagian 8 menghubungkan dashboard statis dan membahas koneksi alat BI.
  9. 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:

bash
cd content/data-engineering/proyek/pipeline-data-dan-dashboard-analitik
python3 -m src.pipeline
python3 -m pytest tests/ -q

Kedua perintah tersebut dijalankan nyata pada Bagian 5 dan Bagian 7; keluarannya ditampilkan apa adanya, bukan karangan.