Data berpindah antar sistem yang berbeda bahasa: aplikasi web berbicara JSON, ekspor spreadsheet berbentuk CSV, dan sistem enterprise lama masih bertahan dengan XML. Tugas data engineer adalah menerjemahkan di antara keduanya.

Pilihan format menentukan ukuran berkas, kecepatan pemrosesan, sampai kejelasan tipe data. Salah baca format, dan angka 5000 bisa berubah makna menjadi teks "5000" tanpa pesan galat. Chapter ini membandingkan tiga format paling umum, mengujinya lewat konversi nyata CSV ke JSON, lalu menutup dengan cek kesiapan diri.

Kenapa Format Data Penting untuk Data Engineer #

Setiap sambungan pipeline menyepakati format: API mengirim JSON, berkas unduhan datang sebagai CSV, dan warehouse menyimpan tabel dengan tipe kolomnya sendiri. Data engineer perlu membaca ketiganya dengan cepat dan menyadari jebakannya.

Jebakan paling sering: CSV tidak menyimpan tipe data, sehingga 12 selalu dibaca sebagai teks kecuali dikonversi secara eksplisit. Perbandingan berikut merangkum perbedaan ketiga format:

AspekCSVJSONXML
Bentuk datatabel datarobjek bertingkatdokumen bertingkat
Tipe datatidak ada — semua teksada: number, boolean, stringada, lewat schema terpisah
Ukuran berkaspaling kecilsedangpaling besar
Keterbacaan manusiamudahmudahberbelit
Pemakaian umumekspor spreadsheet, data tabularAPI dan konfigurasisistem enterprise lama

Contoh Nyata: Mengubah CSV menjadi JSON #

Skenario klasik: menerima berkas CSV dari tim bisnis, lalu menyerahkan data yang sama sebagai JSON ke tim aplikasi. Siapkan berkas CSV kecil sebagai bahan:

bash
printf 'produk,qty,harga\nApel,12,5000\nJeruk,30,3000\n' > penjualan.csv

Skrip berikut membaca CSV tersebut, membungkusnya menjadi payload JSON dengan informasi tambahan, lalu mencetak dan menyimpannya:

python
# Contoh dasar-format-data: CSV dibaca, JSON ditulis
import csv
import json

with open("penjualan.csv", newline="", encoding="utf-8") as f:
    baris_csv = list(csv.DictReader(f))

print("Data mentah dari CSV:", baris_csv)

payload = {"sumber": "penjualan.csv", "jumlah_baris": len(baris_csv), "baris": baris_csv}
teks_json = json.dumps(payload, ensure_ascii=False, indent=2)
print(teks_json)

with open("penjualan.json", "w", encoding="utf-8") as f:
    f.write(teks_json)

Output yang Dihasilkan:

text
Data mentah dari CSV: [{'produk': 'Apel', 'qty': '12', 'harga': '5000'}, {'produk': 'Jeruk', 'qty': '30', 'harga': '3000'}]
{
  "sumber": "penjualan.csv",
  "jumlah_baris": 2,
  "baris": [
    {
      "produk": "Apel",
      "qty": "12",
      "harga": "5000"
    },
    {
      "produk": "Jeruk",
      "qty": "30",
      "harga": "3000"
    }
  ]
}

Mari kita telaah baris-baris kode di atas:

  1. Baris 5-6 (csv.DictReader): pembaca CSV mengubah setiap baris menjadi kamus dengan nama kolom sebagai kunci — tanpa perlu memotong teks secara manual.
  2. Baris 8 (print pertama): keluaran membuktikan jebakan CSV: qty dan harga berupa string '12' dan '5000', bukan angka, karena CSV tidak menyimpan tipe data.
  3. Baris 10-11 (payload + json.dumps): kamus Python dibungkus dengan metadata sumber dan jumlah baris, lalu json.dumps mengubah keseluruhan struktur menjadi teks JSON berindentasi.
  4. Baris 14-15 (write): teks JSON ditulis ke berkas penjualan.json — data yang sama, kini siap dikirim sebagai respons API.

Dokumentasi modul csv dan json tersedia resmi di https://docs.python.org/3/library/csv.html dan https://docs.python.org/3/library/json.html .

Cek Kesiapan Anda #

  • Anda siap bila dapat membaca data JSON bertingkat dan menjelaskan struktur objek di dalamnya.
  • Anda siap bila dapat menyebutkan satu risiko tipe data saat membaca CSV.
  • Anda siap bila dapat memilih format yang tepat untuk skenario: respons API, ekspor spreadsheet, dan dokumen enterprise.
  • Anda siap bila dapat mengonversi data tabular sederhana antara CSV dan JSON memakai Python.

Semua bahan sudah lengkap: bahasa pemrograman, database, sistem operasi, jaringan, version control, dan format data. Satu ranah tersisa yang mengubah cara data engineer bekerja saat ini: cloud. Chapter berikutnya, Dasar Cloud Computing, memetakan model layanan IaaS, PaaS, dan SaaS.