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 open dan with — 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) dan pip — 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.

python
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:

text
[
  {
    "produk": "Apel",
    "subtotal": 60000
  },
  {
    "produk": "Jeruk",
    "subtotal": 90000
  },
  {
    "produk": "Mangga",
    "subtotal": 96000
  }
]
Total pendapatan: 246000

Mari kita telaah baris-baris kode di atas:

  1. Baris 10-13 (subtotal = [...]): list comprehension membangun daftar kamus baru; setiap kamus berisi nama produk dan hasil perkalian qty dengan harga — transformasi kolom demi kolom dalam satu ekspresi.
  2. Baris 16-17 (with open(...) + json.dump): blok with membuka berkas dan menutupnya otomatis setelah blok selesai; json.dump menuliskan struktur Python sebagai teks JSON dengan indentasi dua spasi.
  3. Baris 20-21 (with open(...) + json.load): berkas dibaca kembali dari disk, dan json.load mengubah teks JSON menjadi list kamus yang siap diolah.
  4. Baris 23-25 (sum + print): fungsi sum menjumlahkan nilai subtotal dari setiap kamus, lalu json.dumps mencetak 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(...) dibanding open(...) tanpa blok with.
  • Anda siap bila dapat membedakan json.dump (menulis ke berkas) dari json.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.