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:
| Aspek | CSV | JSON | XML |
|---|---|---|---|
| Bentuk data | tabel datar | objek bertingkat | dokumen bertingkat |
| Tipe data | tidak ada — semua teks | ada: number, boolean, string | ada, lewat schema terpisah |
| Ukuran berkas | paling kecil | sedang | paling besar |
| Keterbacaan manusia | mudah | mudah | berbelit |
| Pemakaian umum | ekspor spreadsheet, data tabular | API dan konfigurasi | sistem 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:
printf 'produk,qty,harga\nApel,12,5000\nJeruk,30,3000\n' > penjualan.csvSkrip berikut membaca CSV tersebut, membungkusnya menjadi payload JSON dengan informasi tambahan, lalu mencetak dan menyimpannya:
# 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:
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:
- Baris 5-6 (
csv.DictReader): pembaca CSV mengubah setiap baris menjadi kamus dengan nama kolom sebagai kunci — tanpa perlu memotong teks secara manual. - Baris 8 (
printpertama): keluaran membuktikan jebakan CSV:qtydanhargaberupa string'12'dan'5000', bukan angka, karena CSV tidak menyimpan tipe data. - Baris 10-11 (
payload+json.dumps): kamus Python dibungkus dengan metadata sumber dan jumlah baris, lalujson.dumpsmengubah keseluruhan struktur menjadi teks JSON berindentasi. - Baris 14-15 (
write): teks JSON ditulis ke berkaspenjualan.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.