Membuat ETL Sederhana Menggunakan Luigi Python

Reza Budi
3 min readFeb 22, 2021

--

ETL merupakan singkatan dari (Extract, Transform, Load) yaitu sebuah proses integrasi data yang menggabungkan data dari berbagai sumber ke dalam suatu penyimpanan yang konsisten dan dimuat ke dalam data warehouse atau system lainnya.

Sebelum menerapkan konsep ETL sebagai seorang data engineer harus mengetahui beberapa hal mendasar terkait ETL.

Mengapa Kita Menggunakan ETL?

Sebelum menjalankan ETL alangkah baiknya kita harus memastikan bahwa data yang terdapat pada penyimpanan sudah memiliki format yang tepat. ETL menyediakan fungsi-fungsi penting yang akan digabungkan menjadi satu aplikasi atau rangkaian alat yang akan membantu pada bidang-bidang berikut:

1. Memberikan solusi untuk keperluan bisnis berdasarkan keadaan pada masa lampau.

2. Meningkatkan solusi yang diberikan kepada Business Intellegence untuk pengambilan keputusan.

3. Melakukan konsep agregasi data yang dapat membuat suatu bisnis menghemat uang atau meningkatkan profit.

4. Mengaktifkan repository data umum.

5. Melakukan verifikasi transformasi data, agregasi dan aturan perhitungan.

6. Melakukan perbandingan data sampel antara sumber dan target.

7. Membantu meningkatkan produktivitas.

Proses dalam ETL dibagi menjadi beberapa bagian

1. Data Extraction

2. Data Cleansing

3. Transformatin

4. Load

Luigi Python Data Pipelining

Dalam artikel ini saya akan memberikan contoh tentang penerapan ETL menggunakan Luigi. Luigi merupakan library pemrograman berbahasa Python yang dikembangkan oleh platform aplikasi streaming musik Spotify. Spotify mengembangkan library ini bertujuan untuk memberikan rekomendasi lagu secara cepat dan efisien kepada para penggunanya.

Luigi adalah sebuah library yang berguna untuk membuat data pipeline yang kompleks. Luigi akan optimal apabila dijalankan pada Python versi 3.6 ke atas, library ini mampu melakukan workflow management, visualization, handling failures, command line integration, dan lain-lain.

Luigi memiliki beberapa komponen dasar yaitu:

- Task

Merupakan konsep untuk melakukan pemrosesan dalam data pipeline.

- Target

Merupakan tahap kedua dari proses pipelining. Sebagai contoh pembuatan file laporan.

- Require

Berisi persyaratan sebelum menjalankan suatu perintah.

- Output

Langkah akhir dari proses ETL, yaitu melakukan penyimpanan nilai dari sebuah perintah yang telah dijalankan.

- Run

Implementasi Luigi

Untuk melakukan instalasi dengan cara menggunakan terminal/command prompt lalu tuliskan :

pip install luigi 

Setelah berhasil terpasang kemudian buat direktori untuk menjalankan project Luigi :

mkdir luigi_tutorial
cd luigi_tutorial

Kemudian kita buat file berisi program Python

##word_frekuensi.py##import requestsimport luigifrom bs4 import BeautifulSoupclass GetTopBooks(luigi.Task):"""Get list of the most popular books from Project Gutenberg"""def output(self):return luigi.LocalTarget("data/books_list.txt")def run(self):resp = requests.get("http://www.gutenberg.org/browse/scores/top")soup = BeautifulSoup(resp.content, "html.parser")pageHeader = soup.find_all("h2", string="Top 100 EBooks yesterday")[0]listTop = pageHeader.find_next_sibling("ol")with self.output().open("w") as f:for result in listTop.select("li>a"):if "/ebooks/" in result["href"]:f.write("http://www.gutenberg.org{link}.txt.utf-8\n".format(link=result["href"]))

Setelah file dibuat lalu dijalankan dengan perintah

python -m luigi -module word_frekuensi GetTopBooks --local-scheduler

Gambar di atas mengindikasikan bahwa proses ETL berjalan dengan sukses. Lalu untuk mengetahui apakah proses tersebut dapat ditampilkan pada Luigi Workflow Manager maka ketikan perintah berikut pada terminal/command prompt.

luigid

Pada jendela browser buka alamat http://localhost:8082, maka akan muncul gambar sebagai berikut.

Tuliskan perintah :

python -m luigi --module word_frekuensi GetTopBooks 

Maka tampilan Luigi Task Status akan menjadi. Data yang dikirmkan sukses.

Kesimpulan

Luigi merupakan tools untuk data engineer dalam mengembangkan data pipeline dan scheduler.

Framework ini memiliki fitur yang mumpuni untuk melakukan ekstraksi dari beberapa sumber data, selain itu Luigi dapat dijalankan dalam server lokal/device kalian. Hal ini berbeda dengan Airflow yang lebih optimal apabila dijalankan dengan cloud. Sehingga Luigi mudah dan efisien untuk digunakan dan dipelajari bagi kalian yang tertarik pada bidang data engineering.

--

--