Proyek ini membawa kita membangun pipeline ETL (extract, transform, load) lengkap untuk Toko Nusantara Mart, toko yang menjual enam produk yang sama melalui tiga jalur penjualan: laporan CSV gabungan Cabang A Bandung, JSON pesanan marketplace, dan tabel SQLite milik sistem kasir Cabang B Denpasar. Tim keuangan meminta satu tabel transaksi bersih Januari sampai Maret 2026, sedangkan ketiga sumber menyimpan data dengan nama kolom, format tanggal, dan makna harga yang berbeda-beda; data mentahnya sengaja memuat masalah yang lazim ditemui di lapangan: baris ganda, harga 0, qty 0, label kota tidak seragam, dan tiga transaksi Cabang B yang tercatat di dua sumber sekaligus. Seluruh sumber dibangun generator deterministik dengan seed 88 sehingga setiap angka pada proyek ini dapat direproduksi — 25 baris mentah yang berubah menjadi 19 baris bersih. Empat bagian berurutan membawa pipeline dari sumber mentah hingga berkas siap pakai:

  • Bagian 1: Mengambil Data dari Berbagai Sumber — mengekstrak CSV, JSON, dan SQLite dengan read_csv(), read_json(), dan read_sql(), lalu memetakan perbedaan format sebagai kontrak kerja.
  • Bagian 2: Membersihkan dan Mentransformasi Data — enam langkah menyeragamkan skema, menggabungkan dengan pd.concat(), membuang duplikat lintas sumber, dan menghitung kolom total.
  • Bagian 3: Memvalidasi Hasil Transformasi — tiga gerbang validator (skema, rentang, keunikan) plus assert_frame_equal() terhadap ekspektasi beku 19 baris.
  • Bagian 4: Mengekspor Data Bersih — mengekspor ke Parquet, CSV ringkasan omzet per kota, dan tabel SQLite, ditutup rekap aliran baris tiap sumber.

Kerjakan bagian demi bagian secara berurutan, karena hasil tiap bagian menjadi bahan baku bagian berikutnya; setiap folder bagian menyertakan salinan data_sumber.py sehingga setiap chapter dapat dijalankan sendiri. Proyek ini menerapkan konsep dari beberapa section sebelumnya: Membaca dan Menulis Data untuk read_csv(), read_json(), dan read_sql(); Menggabungkan dan Membentuk Data serta Data Cleaning untuk pd.concat() dan drop_duplicates(); Pengujian dan Debugging untuk assert_frame_equal(); dan Praktik Data Engineering untuk pola pipeline, logging, serta ekspor. Setelah keempat bagian tuntas, proyek terakhir course ini — Analisis Deret Waktu Penjualan — menunggu dengan fokus baru: data yang bergerak sepanjang waktu.