Data Formats (CSV, Parquet, JSON Lines) — Data Engineering

Format Data untuk Data Engineering Pemilihan format data yang tepat sangat mempengaruhi performa query, ukuran storage, dan kemudahan processing. CSV…

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

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"])

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)

Kapan Menggunakan Apa?

Use CaseFormat
Quick sharing, Excel usersCSV
Data warehouse, analitikParquet
Event streaming, logJSON Lines
API response storageJSON Lines
ML training dataParquet

Yang akan kamu pelajari