Format Data untuk Data Engineering
Pemilihan format data yang tepat sangat mempengaruhi performa query, ukuran storage, dan kemudahan processing.
CSV (Comma-Separated Values)
Format paling sederhana dan universal. Human-readable tapi tidak efisien untuk data besar.
# Contoh CSV
id,name,amount,date
1,"Budi Santoso",150000,2024-01-15
2,"Siti Rahayu",275000,2024-01-16
3,"Ahmad Wijaya",89000,2024-01-16
# Baca dengan Python
import pandas as pd
df = pd.read_csv("transactions.csv")
print(df.dtypes) # Semua kolom perlu di-cast manual
- Pro: Universal, bisa dibuka di Excel, mudah di-debug
- Kontra: Tidak ada tipe data, tidak efisien (semua string), tidak bisa di-query partial
Parquet
Format columnar yang sangat efisien untuk analitik. Standar de facto di data engineering modern.
# Menulis Parquet
import pandas as pd
df = pd.DataFrame({
"id": [1, 2, 3],
"name": ["Budi", "Siti", "Ahmad"],
"amount": [150000, 275000, 89000]
})
df.to_parquet("transactions.parquet", compression="snappy")
# Ukuran file: ~80% lebih kecil dari CSV untuk data besar
# Query hanya kolom tertentu → jauh lebih cepat
selected = pd.read_parquet("transactions.parquet", columns=["name", "amount"])
- Pro: Kompresi excellent, column pruning, tipe data built-in, predicate pushdown
- Kontra: Tidak human-readable, butuh library khusus untuk baca
JSON Lines (JSONL / NDJSON)
Satu JSON object per baris. Ideal untuk streaming dan log data.
// Contoh .jsonl — setiap baris adalah JSON valid
{"id": 1, "event": "page_view", "url": "/home", "ts": "2024-01-15T10:30:00Z"}
{"id": 2, "event": "click", "url": "/products", "ts": "2024-01-15T10:30:05Z"}
{"id": 3, "event": "purchase", "amount": 150000, "ts": "2024-01-15T10:31:00Z"}
# Baca per baris (memory efficient)
import json
with open("events.jsonl") as f:
for line in f:
event = json.loads(line)
process(event)
- Pro: Streaming-friendly, schema flexible, append-only mudah
- Kontra: Lebih besar dari Parquet, tidak ada column pruning
Kapan Menggunakan Apa?
| Use Case | Format |
|---|---|
| Quick sharing, Excel users | CSV |
| Data warehouse, analitik | Parquet |
| Event streaming, log | JSON Lines |
| API response storage | JSON Lines |
| ML training data | Parquet |