Praktik: Data Engineering End-to-End
Apa & untuk apa
Tutorial ini mengajak Anda menjadi data engineer untuk satu proyek nyata: menyiapkan data penjualan UMKM kuliner agar siap dianalisis. Anda akan menyentuh seluruh rantai data engineering di PSD — mengumpulkan data (Ruang Panen Data / Data Sintesis), menampung di data lakehouse SatuDanau, mengolah lewat pipeline ETL di Pabrik Data, lalu memverifikasi hasil gold di Ruang Kueri (data warehouse SQL).
Inilah fondasi semua proyek data. "Data engineering" pada dasarnya menjawab: bagaimana data mentah yang berantakan berubah menjadi tabel rapi, tepercaya, dan siap dipakai? Di PSD, jawabannya adalah arsitektur medallion (bronze → silver → gold) di atas SatuDanau.
gold bersih siap dianalisis.Cara kerja: konsep lakehouse & medallion
Sebelum praktik, kenali dua konsep inti.
Data lakehouse (SatuDanau) menggabungkan:
- Data lake — bebas menyimpan apa saja: CSV mentah, JSON, gambar, arsip (area Berkas).
- Data warehouse — tabel terstruktur yang bisa dikueri SQL (area Tabel).
Lapisan medallion menata perjalanan kualitas data:
| Lapisan | Isi | Analogi | Dihasilkan oleh |
|---|---|---|---|
| Bronze | Data mentah apa adanya | Bahan baku belum dicuci | Panen / sintesis / unggah |
| Silver | Sudah dibersihkan & dinormalisasi | Bahan sudah dicuci & dipotong | Pabrik Data |
| Gold | Siap analitik, teragregasi | Hidangan siap saji | Pabrik Data / CTAS |
Aturan main: jangan pernah menganalisis langsung dari bronze. Selalu naikkan dulu ke gold. Format kanonik danau adalah Parquet + Delta — CSV/JSON/Avro/ORC dinormalkan otomatis saat masuk.
Kapan dipakai
Cocok untuk:
- Menyiapkan data mentah sebelum analisis/model apa pun.
- Membangun alur data yang berulang & reproducible (bukan sekali pakai).
- Menggabungkan beberapa sumber data menjadi satu tabel bersih.
Kurang tepat bila:
- Data Anda sudah bersih & kecil — cukup unggah langsung ke Dataset lalu analisis.
- Anda hanya butuh eksplorasi cepat sekali jalan — pakai Notebook saja.
Langkah demi langkah
Langkah 1 — Kumpulkan data mentah (bronze)
Anda punya beberapa pilihan sumber. Pakai salah satu atau kombinasi:
Opsi A — Ruang Panen Data (data dari API/situs eksternal):
- Buka Suite Data → Ruang Panen Data (
/harvest). - Buat job panen: masukkan sumber (hanya domain tepercaya/allowlist yang diizinkan).
- Jalankan → hasil tersimpan sebagai dataset draft untuk dikurasi.
Opsi B — Data Sintesis (bila belum punya data / untuk latihan):
- Buka Suite Data → Data Sintesis (
/synthesis). - Mode dari prompt: deskripsikan "transaksi penjualan UMKM kuliner di Lampung, 5.000 baris,
kolom: tanggal, kota, menu, qty, harga, total". LLM menyusun spesifikasi skema, lalu generator lokal (Faker id_ID) membuat baris — hemat kuota walau ribuan baris.
- Hasil wajib berlabel "Data Sintesis" — jangan disamarkan sebagai data resmi.
Opsi C — Unggah manual: seret berkas CSV langsung ke Dataset dari peramban.
Langkah 2 — Tata di SatuDanau
- Buka aset Dataset Anda → tab Danau (SatuDanau).
- Pastikan data mentah ada di area Berkas atau terdaftar sebagai Tabel bronze.
- (Opsional) Gunakan Pintasan bila ingin merujuk data dari dataset lain tanpa menyalin.
Sekarang data siap masuk pipeline.
Langkah 3 — Bangun pipeline ETL di Pabrik Data
- Buka Suite Data → Pabrik Data (
/factory/pipelines) → Buat pipeline. - Susun node di kanvas visual:
| Node | Fungsi dalam studi kasus |
|---|---|
| Source | Ambil tabel bronze dari SatuDanau (bukan path sembarang) |
| Filter | Buang baris rusak, mis. total > 0, kota IS NOT NULL |
| Select | Pilih kolom relevan saja |
| Aggregate | Ringkas: omzet per kota per hari (SUM/COUNT) |
| Join | (opsional) gabung dengan tabel referensi menu |
- Pilih engine: Auto (biar sistem memilih), DuckDB (data kecil–menengah, cepat), atau
Spark (data sangat besar).
- Validasi — sistem memeriksa alur (tak boleh ada siklus; harus satu node keluaran/sink)
dan menampilkan SQL/PySpark yang dihasilkan otomatis — bagus untuk belajar kode nyata.
- Pratinjau — lihat contoh baris tanpa menyimpan (hemat kuota).
- Jalankan — saat selesai muncul tautan "Lihat dataset hasil".
Langkah 4 — Verifikasi hasil di Ruang Kueri
Sebelum menyerahkan data ke analis/ilmuwan data, pastikan benar:
- Buka Suite Data → Ruang Kueri (
/analytics/kueri). - Di panel katalog, temukan tabel gold Anda di skema
gold_<username>. - Jalankan kueri pemeriksaan:
SELECT kota, COUNT(*) AS jumlah_hari, SUM(omzet) AS total_omzet
FROM lake.gold_username.penjualan_harian
GROUP BY kota
ORDER BY total_omzet DESC- Cek kewajaran: tak ada omzet negatif, kota sesuai harapan, jumlah baris masuk akal.
- (Opsional) Buat tabel ringkasan permanen dengan CTAS ke skema gold Anda sendiri.
Langkah 5 — (Opsional) Katalogkan & dokumentasikan
- Buka Ruang Metadata untuk dataset gold Anda.
- Isi klasifikasi (public/internal/pii), aturan kualitas (not_null, unique, freshness),
dan lihat lineage (asal-usul data dari pipeline).
- Publikasikan koleksi terkurasi ke Pustaka Metadata agar ditemukan orang lain.
Selamat — data Anda kini bersih, tepercaya, dan siap masuk Jalur 2 (Data Science) atau Jalur 3 (BI & Analitik).
Batas tier
Setiap tahap punya kuota. Angka berikut ilustratif — angka dapat berubah.
| Fitur | Pemula | Menengah | Lanjut |
|---|---|---|---|
| Pabrik Data (DuckDB) | ≤ 200 MB, 5 run/hari | ≤ 1 GB, 30 run/hari | ≤ 5 GB, 100 run/hari |
| Pabrik Data (Spark) | 🔒 | ≤ 20 GB, 10 run/hari | ≤ 200 GB, node kode .py |
| Ruang Panen Data | volume kecil, frekuensi rendah | menengah | tinggi |
| Data Sintesis | maks baris kecil, AI/hari terbatas | lebih besar | terbesar |
.py di Spark juga butuh akses kernel (disetujui admin) selain tier Lanjut.Poin & quest
| Aktivitas | Poin (ilustratif) |
|---|---|
| Panen data pertama | +10 |
| Membuat pipeline | +5 |
| Menjalankan pipeline (sukses) | +10 |
| Menghasilkan dataset gold | +25 |
| Verifikasi lewat kueri | +5 |
Quest bertema data engineering:
- Pemanen Data — selesaikan satu job panen atau sintesis.
- Arsitek Medallion — hasilkan tabel di lapisan bronze, silver, dan gold.
- Insinyur Pipeline — jalankan pipeline sukses dari bronze ke gold.
- Penjaga Kualitas — isi aturan kualitas di Ruang Metadata.
Masalah umum & solusi
| Gejala | Penyebab | Solusi |
|---|---|---|
| Source tak menemukan data | Belum ada tabel bronze | Panen/sintesis/unggah dulu ke SatuDanau |
| Validasi pipeline gagal (siklus) | Node membentuk lingkaran | Perbaiki koneksi; alur harus searah |
| "Harus satu keluaran" | Lebih dari satu sink | Sisakan tepat satu node keluaran |
| Engine Spark terkunci | Tier belum cukup | Naikkan tier atau pakai DuckDB |
| Tabel tak muncul di Ruang Kueri | Masih bronze/silver | Naikkan ke gold lewat pipeline/CTAS |
| Domain panen ditolak | Di luar allowlist | Gunakan sumber tepercaya yang diizinkan |
| Data sintesis dikira asli | Lupa label | Hasil selalu berlabel "Data Sintesis" — biarkan |
Fitur terkait
- Ruang Panen Data — sumber data eksternal (langkah 1).
- Data Sintesis — data buatan berkonteks Indonesia untuk latihan.
- Dataset — rumah SatuDanau & lapisan medallion.
- Pabrik Data — mesin ETL visual (langkah 3).
- Ruang Kueri — verifikasi & analitik SQL atas gold.
- Ruang Metadata — katalog, kualitas, dan lineage.
- Praktik: Data Science End-to-End — lanjutan memakai tabel gold untuk model.