Data engineering modern ditopang Python: DAG Airflow ditulis dengan Python, dbt dijalankan lewat Python, dan PySpark adalah API resmi Apache Spark. Kabar baiknya, seorang data engineer tidak perlu menguasai seluruh bahasa — cukup pola yang muncul berulang dalam pekerjaan data.
Tiga pola paling sering adalah comprehension untuk meringkas data, file IO untuk membaca dan menulis berkas, serta modul json untuk bertukar data antar sistem. Chapter ini memetakan ketiganya, mengujinya dengan satu contoh nyata, lalu menutup dengan cek kesiapan diri.
Kenapa Python Penting untuk Data Engineer #
Python berperan sebagai perekat antar tool dalam pipeline. Skrip ingestion memanggil API, job PySpark memproses data besar, dan definisi orchestration mengatur urutan semuanya — semuanya ditulis dengan bahasa yang sama.
Menguasai pola dasar Python berarti dapat membaca kode pipeline yang ditulis rekan tim, keterampilan sesungguhnya saat bergabung di tim data. Empat pola berikut menutup sebagian besar kebutuhan harian:
- List dan dict comprehension — membangun daftar atau kamus baru dari data mentah dalam satu ekspresi ringkas.
- File IO dengan
opendanwith— membaca berkas sumber dan menulis hasil transformasi dengan penutupan berkas otomatis. - Modul
json— mengubah struktur data Python menjadi teks JSON, dan sebaliknya, saat bertukar data dengan API. - Virtual environment (
venv) danpip— mengunci dependensi agar pipeline dapat dijalankan ulang di mesin mana pun.
Contoh Nyata: Meringkas Penjualan ke Berkas JSON #
Skenario berikut menggabungkan tiga pola inti: data penjualan diringkas lewat comprehension, ditulis ke berkas JSON, lalu dibaca kembali dan dijumlahkan. Alur seperti ini adalah kerangka kecil dari sebuah job ETL.
import json
penjualan = [
{"produk": "Apel", "qty": 12, "harga": 5000},
{"produk": "Jeruk", "qty": 30, "harga": 3000},
{"produk": "Mangga", "qty": 8, "harga": 12000},
]
# Comprehension: hitung subtotal tiap baris
subtotal = [
{"produk": baris["produk"], "subtotal": baris["qty"] * baris["harga"]}
for baris in penjualan
]
# Tulis hasil ke berkas JSON
with open("subtotal.json", "w", encoding="utf-8") as f:
json.dump(subtotal, f, ensure_ascii=False, indent=2)
# Baca kembali lalu jumlahkan total pendapatan
with open("subtotal.json", "r", encoding="utf-8") as f:
hasil = json.load(f)
total = sum(baris["subtotal"] for baris in hasil)
print(json.dumps(hasil, ensure_ascii=False, indent=2))
print("Total pendapatan:", total)Output yang Dihasilkan:
[
{
"produk": "Apel",
"subtotal": 60000
},
{
"produk": "Jeruk",
"subtotal": 90000
},
{
"produk": "Mangga",
"subtotal": 96000
}
]
Total pendapatan: 246000Mari kita telaah baris-baris kode di atas:
- Baris 10-13 (
subtotal = [...]): list comprehension membangun daftar kamus baru; setiap kamus berisi nama produk dan hasil perkalianqtydenganharga— transformasi kolom demi kolom dalam satu ekspresi. - Baris 16-17 (
with open(...)+json.dump): blokwithmembuka berkas dan menutupnya otomatis setelah blok selesai;json.dumpmenuliskan struktur Python sebagai teks JSON dengan indentasi dua spasi. - Baris 20-21 (
with open(...)+json.load): berkas dibaca kembali dari disk, danjson.loadmengubah teks JSON menjadi list kamus yang siap diolah. - Baris 23-25 (
sum+print): fungsisummenjumlahkan nilaisubtotaldari setiap kamus, lalujson.dumpsmencetak versi teks dari struktur hasil.
Perhatikan bahwa angka 60000 dan 90000 muncul tanpa tanda kutip di keluaran JSON — modul json mempertahankan tipe angka dari Python. Detail kecil semacam ini menentukan apakah kolom hasil dapat langsung dihitung atau harus dikonversi lebih dulu.
Cek Kesiapan Anda #
- Anda siap bila dapat menulis list comprehension yang mengubah setiap elemen sebuah daftar kamus.
- Anda siap bila dapat menjelaskan alasan memakai
with open(...)dibandingopen(...)tanpa blokwith. - Anda siap bila dapat membedakan
json.dump(menulis ke berkas) darijson.dumps(menghasilkan string). - Anda siap bila dapat membuat virtual environment terpisah untuk dua proyek dengan dependensi berbeda.
Setelah Python siap, pertanyaan berikutnya adalah dari mana data diambil: hampir selalu jawabannya database, dan pintu masuknya adalah SQL. Chapter berikutnya, Dasar SQL, memetakan kemampuan SQL minimal yang wajib dimiliki.