Proyek ini menunjukkan bagaimana membangun pipeline ETL menggunakan Luigi. Pipeline ini akan menangani ekstraksi, validasi, transformasi, dan pemuatan data (ETL) untuk kasus analisis hotel.
Pipeline ETL ini melibatkan beberapa tahap: ekstraksi, validasi, transformasi, dan pemuatan. Desain pipeline adalah sebagai berikut:
-
Ekstraksi Data:
- Sumber Data:
- API: Data Payment
- Database: Data Hotel
- Tindakan: Ekstrak data dari sumber-sumber tersebut dan simpan output sebagai file
.csvdi folderdata_extract.
- Sumber Data:
-
Validasi Data:
- Tugas Validasi:
- Mencari tahu bentuk data
- Mencari tahu tipe data kolom
- Mencari tahu nilai yang hilang (missing values)
- Tindakan: Validasi data yang diekstrak dan laporkan jika ada ketidaksesuaian.
- Tugas Validasi:
-
Transformasi Data:
- Tugas Transformasi:
- Gabungkan data dari beberapa sumber menjadi satu tabel yang bersih:
payment(Data Pembayaran API)reservation(DB Hotel)customer(DB Hotel)
- Gabungkan data dari beberapa sumber menjadi satu tabel yang bersih:
- Tindakan: Lakukan transformasi yang diperlukan, seperti penggabungan, penambahan kolom baru, dan penanganan nilai yang hilang atau salah.
- Setelah transformasi berhasil, simpan data hasilnya sebagai file
.csvdi folderdata_transform.
- Tugas Transformasi:
-
Memuat Data ke Data Warehouse:
- Tindakan: Muat data yang telah ditransformasikan ke dalam Data Warehouse.
-
Menggabungkan Semua Pipeline:
- Tindakan: Gunakan Luigi untuk mengorkestrasi dan menggabungkan ekstraksi, validasi, transformasi, dan pemuatan data ke dalam satu pipeline yang terintegrasi.
-
Menjadwalkan Pipeline:
- Tindakan: Jadwalkan pipeline untuk berjalan setiap 2 menit menggunakan cron. Ekspresi cron untuk jadwal ini adalah:
*/2 * * * * /path/to/pipeline.sh
- Tindakan: Jadwalkan pipeline untuk berjalan setiap 2 menit menggunakan cron. Ekspresi cron untuk jadwal ini adalah:
-
Proses UPSERT:
- Tindakan: Implementasikan fungsi UPSERT untuk memastikan bahwa data diperbarui dengan benar di Data Warehouse, menguji kekuatan pipeline yang telah dibuat.
- Python 3.7+
- Libraries:
- Luigi
- Pandas
- SQLAlchemy
- psycopg2
- Instansi PostgreSQL yang berjalan untuk Data Warehouse.
- Instal dependensi yang diperlukan:
pip install luigi pandas sqlalchemy psycopg2