Setiap pipeline data pada dasarnya adalah program: sekumpulan instruksi yang membaca data dari satu tempat, memeriksa isinya, lalu menuliskan hasilnya ke tempat lain. Sebelum menyentuh tool data engineering seperti Airflow atau Spark, kita perlu berlatih dengan empat fondasi pemrograman: variabel, tipe data, kontrol alur, dan fungsi.
Tanpa fondasi tersebut, masalah kecil seperti tipe data yang tidak cocok dapat menyita waktu berjam-jam saat pipeline menolak berjalan. Chapter ini memetakan apa saja yang perlu dikuasai, menunjukkan satu contoh nyata, lalu menutup dengan daftar cek kesiapan diri.
Kenapa Dasar Pemrograman Penting untuk Data Engineer #
Data engineer menulis kode hampir setiap hari: skrip ingestion, logika transformasi, aturan validasi kualitas data, sampai definisi job orchestration. Berbeda dengan aplikasi web, kode di dunia data bekerja dengan volume besar dan tipe data yang beragam, sehingga kesalahan kecil berdampak berlipat.
Satu konversi tipe yang keliru pada satu baris bisa mengubah hasil untuk satu juta baris sekaligus. Empat fondasi berikut karena itu muncul berulang kali dalam pekerjaan harian:
| Fondasi | Peran di pipeline | Contoh pemakaian |
|---|---|---|
| Variabel | menampung konfigurasi yang dipakai berulang | nama tabel, path file, alamat koneksi |
| Tipe data | menjaga makna nilai saat data berpindah sistem | membedakan teks "123" dari angka 123 |
| Kontrol alur | mengulang dan menyaring baris data | for mengiterasi baris, if memvalidasi |
| Fungsi | memaketkan logika agar teruji dan terpakai ulang | hitung_subtotal(baris) |
Contoh Nyata: Menyaring Data Transaksi #
Pola paling dasar di dunia data adalah iterasi kumpulan baris, penyaringan dengan kondisi, lalu pengumpulan hasil. Kode berikut menyaring transaksi bernilai besar dari sebuah daftar — pola yang sama dipakai saat memisahkan data valid dari data bermasalah.
transaksi = [
("TRX-001", "Budi", 1_500_000),
("TRX-002", "Siti", 250_000),
("TRX-003", "Dewi", 3_200_000),
("TRX-004", "Budi", 75_000),
]
batas = 1_000_000
transaksi_besar = []
for kode, nama, jumlah in transaksi:
if jumlah > batas:
transaksi_besar.append((kode, nama, jumlah))
for kode, nama, jumlah in transaksi_besar:
print(f"{kode} | {nama} | {jumlah}")Output yang Dihasilkan:
TRX-001 | Budi | 1500000
TRX-003 | Dewi | 3200000Mari kita telaah baris-baris kode di atas:
- Baris 1-6 (
transaksi = [...]): list berisi tuple — struktur khas hasil pembacaan data, karena setiap tuple merepresentasikan satu baris dengan tiga kolom. - Baris 8 (
batas = 1_000_000): variabel menampung ambang batas sekali saja; mengubah nilai di satu tempat langsung mengubah aturan penyaringan keseluruhan. - Baris 9 (
transaksi_besar = []): list kosong disiapkan sebagai wadah hasil, terpisah dari data asli. - Baris 11-13 (
for+if+append): loop membongkar setiap tuple ke tiga variabel, kondisiifmenyaring baris bernilai besar, danappendmengumpulkan baris lolos saring ke wadah hasil. - Baris 15-16 (
print): hasil akhir dicetak pada loop terpisah — pekerjaan mengolah data dipisahkan dari pekerjaan menampilkan data.
Cek Kesiapan Anda #
Ukur sendiri fondasi Anda dengan daftar berikut sebelum lanjut ke chapter pemrograman berikutnya:
- Anda siap bila dapat menjelaskan perbedaan tipe data teks dan angka, beserta risikonya saat data dipindahkan antar sistem.
- Anda siap bila dapat menulis loop yang membaca sekumpulan baris dan menyaringnya memakai kondisi.
- Anda siap bila dapat memaketkan logika sederhana ke dalam fungsi yang menerima input dan mengembalikan hasil.
- Anda siap bila dapat membaca pesan galat (error) dan menunjuk baris penyebabnya tanpa menebak.
Fondasi pemrograman bersifat universal, tetapi penerapannya di dunia data engineering paling padat pada satu bahasa: Python. Chapter berikutnya, Dasar Python, memetakan bagian mana dari Python yang benar-benar dipakai data engineer setiap hari.