Lewati ke konten utama
C4

C4 · Data Engineering

Membangun pipeline data yang benar, bisa diulang, dan tahan gangguan: dari berkas kasir yang berantakan dan API yang berhalaman sampai gudang data berskema bintang, muat inkremental, streaming, dan tata kelola, dengan AI sebagai rekan yang setiap SQL dan transformasinya diuji terhadap data.

Bagian dari jalur:
Mulai Modul 01

Daftar modul

  1. 01Peran data engineer dan siklus hidup dataGratis7 latihan
  2. 02Format dan penyimpananGratis8 latihan
  3. 03SQL analitikCoding Studio7 latihan
  4. 04Ingest dari berkas dan APICoding Studio7 latihan
  5. 05Validasi, kualitas, dan kontrak dataCoding Studio7 latihan
  6. 06Pemodelan dimensionalCoding Studio7 latihan
  7. 07Dimensi yang berubah (SCD)Coding Studio7 latihan
  8. 08Muat inkremental dan CDCCoding Studio7 latihan
  9. 09Transformasi sebagai kodeCoding Studio7 latihan
  10. 10OrkestrasiCoding Studio7 latihan
  11. 11DataFrame berskala: Polars dan DuckDBCoding Studio7 latihan
  12. 12Pemrosesan terdistribusiCoding Studio7 latihan
  13. 13StreamingCoding Studio7 latihan
  14. 14Lakehouse dan tata kelolaCoding Studio7 latihan
  15. 15Keandalan dan biayaCoding Studio7 latihan
  16. 16Proyek akhir: Gudang MakmurCoding Studio6 latihan

Modul 01–02 gratis; modul bergembok terbuka dengan Coding Studio. Lihat paket

Ada contoh atau latihan bertanda “Kerjakan di laptop”? Paket dan data C4 untuk menjalankannya di komputermu ada di panduan menjalankan kode di komputermu.

Tentang course ini

Membangun pipeline data yang benar, bisa diulang, dan tahan gangguan: dari berkas kasir yang berantakan dan API yang berhalaman sampai gudang data berskema bintang, muat inkremental, streaming, dan tata kelola, dengan AI sebagai rekan yang setiap SQL dan transformasinya diuji terhadap data.

Course inti jalur Data Engineer, juga dianjurkan untuk ML Engineer dan Data Scientist. Urutan jalur: F1 Python, F2 SQL, F5 Rilis, K1, C1, C2, C9, C3, lalu C4, C10, dan C5.

Setiap modul berisi latihan terperiksa: kode awal, tes, dan contoh yang keluarannya dicocokkan otomatis.


Posisi course

Kenapa course ini ada

Analis dan model hanya sebaik data yang mereka terima. Di dunia nyata data datang dari mesin kasir dengan format berbeda, API yang berhalaman dan kadang mengulang, log perubahan yang tiba tidak berurutan, dan event ponsel yang terlambat berjam-jam. Kesalahan pipeline jarang membuat program berhenti; ia diam-diam menghasilkan angka yang salah:

  • omzet harian dihitung dari tanggal berkas, bukan tanggal transaksi;
  • kiriman ulang berkas yang sama menggandakan penjualan;
  • harga hari ini ditempelkan ke transaksi bulan lalu (join ke versi terkini);
  • event hapus yang datang sebelum event ubah menghidupkan lagi data yang sudah dihapus;
  • pipeline yang dijalankan dua kali menulis data dua kali (tidak idempoten);
  • kolom baru dari sumber memecahkan semua laporan esok paginya.

Cara klasik di course ini: pemodelan relasional dan dimensional (Kimball: grain, fakta, dimensi, surrogate key, SCD), SQL analitik, format baris vs kolom dan isi berkas Parquet, idempotensi, muat inkremental dan CDC, graf ketergantungan dan urutan topologis, MapReduce dan shuffle, model Dataflow untuk streaming (waktu kejadian, jendela, watermark), kualitas dan kontrak data. Cara modern: DuckDB, Polars (eksekusi malas), Apache Arrow dan Parquet, transformasi sebagai kode ala dbt, orkestrasi (Airflow, Dagster, Prefect, GitHub Actions terjadwal), format tabel lakehouse (Apache Iceberg, Delta Lake), observabilitas data, dan AI sebagai rekan yang setiap kueri dan transformasinya dicocokkan dengan total yang sudah diketahui.

Untuk siapa

  • Lulusan F1 Python dan F2 SQL (wajib). C1 dianjurkan (data dan pertanyaan analis yang dilayani pipeline ini) dan K1 (tabel hash, pencarian biner, heap, graf). Lab yang memakai Docker, git, dan GitHub Actions (Modul 10, 13, 16) mengandalkan F5 Rilis, terutama Modul 02–05 dan 08; C4 tidak mengajarkan ulang alat itu.
  • Sapaan "kamu", sama dengan course lain di Coding Studio.

Lingkungan lab

BagianDi manaDiperiksa
Latihan Python dengan pandas, Polars, DuckDB, pyarrow; SQL lewat DuckDB dan SQLitePeramban (Pyodide 314: Python 3.14) untuk sebagian besar latihan; Latihan 11.1, 11.3, 11.4, 11.5 dan contoh Polars yang memindai CSV atau Parquet tidak berjalan di peramban (Polars di sana dibangun tanpa Parquet dan tanpa pemindai berkas) dan ditandai "Kerjakan di laptop". Pemeriksa memakai Python 3.12 dan 3.13 dengan versi paket yang sama (_kerangka/requirements.txt, berkas bersama jalur Data & AI)Otomatis
Orkestrator (Airflow/Dagster/Prefect), dbt Core, Spark, Kafka, pipeline terjadwal GitHub Actions, sumber data publik IndonesiaGitHub Codespaces (gratis)Lab "Selesai bila:"

Versi dipatok sama dengan Pyodide 314.0.7: pandas 3.0.2, Polars 1.33.1, DuckDB 1.5.1, pyarrow 22.0.0, numpy 2.4.6. dbt, Airflow, Dagster, Spark, dan Kafka tidak ada di peramban maupun pemeriksa: kodenya statis dan dikerjakan di Lab, sedangkan prinsipnya ditulis sendiri dan diperiksa (misalnya "dbt mini" dengan urutan topologis, eksekutor DAG dengan coba ulang, simulasi map–shuffle–reduce, jendela streaming dengan watermark).

Waktu: ±6 jam per modul untuk bagian inti, total ±95 jam. Bagian "Di balik layar (opsional)" dan latihan bertanda opsional boleh dilewati; kuis tidak mengujinya.

Versi lab

Nomor versi "terbaru" cepat usang, jadi prosa modul tidak menyebutnya. Versi latihan terperiksa dipatok di _kerangka/requirements.txt (lihat di atas). Versi alat Lab di bawah adalah versi rujukan per 18 Oktober 2026. Pemeriksa otomatis tidak menjalankan satu pun, jadi cek ulang sebelum memasang dan catat versi yang kamu pakai di README repositori.

Alat (Lab)Versi rujukanCatatan
dbt Core + dbt-duckdb (Modul 09)1.12.6 + 1.11.0Jalur dbt 2.x sudah ada; konsep modul tidak bergantung padanya
Apache Airflow (Modul 10)3.3.2Perintah Lab: airflow dags test, backfill --dry-run
PySpark (Modul 12)4.2.0Belum dijalankan; Lab opsional
Redpanda + confluent-kafka (Modul 13)26.2 + 2.16.0Belum dijalankan; catat versi yang kamu pakai
pyiceberg, deltalake (Modul 14)0.12.0, 1.6.6Lab opsional
GitHub Actionscheckout@v5, setup-python@v6 (sama dengan F5)Cek ulang versi mayor terbaru

Silabus (16 modul)

#ModulKlasikModernProyek Gudang Makmur
01Peran data engineer dan siklus hidup dataSumber → ingest → simpan → transformasi → sajikan; OLTP vs OLAP; batch vs streaming; siklus hidup data (Reis & Housley 2022)Modern data stack, lakehouse, agen AI yang menulis pipelinePeta sumber data Warung Makmur dan pertanyaan analis
02Format dan penyimpananBaris vs kolom; jebakan CSV (pemisah, desimal, pengodean, tanggal); JSON dan JSONL; isi Parquet (row group, column chunk, page, kamus dan RLE, statistik min/maks); kompresipyarrow, Arrow di memori, Parquet lewat DuckDB/PolarsMembaca dua format mesin kasir ke satu skema; Parquet
03SQL analitikFungsi jendela, CTE, GROUPING SETS, anti-join, QUALIFY; rencana kueri (F2)DuckDB langsung di atas Parquet/CSVLaporan omzet harian dan peringkat produk
04Ingest dari berkas dan APIIdempotensi, paginasi offset vs kursor dan duplikat, coba ulang dengan backoff, batas laju, schema-on-read; scraping yang etis (robots.txt, ketentuan layanan, UU PDP)httpx dengan klien palsu, ingest bertahapIngest daftar harga pemasok
05Validasi, kualitas, dan kontrak dataDimensi kualitas (kelengkapan, keabsahan, keunikan, ketepatan waktu), batasan, karantina (dead-letter), kontrak data antara produsen dan konsumenTes data ala dbt/Great Expectations (ditulis sendiri)Karantina baris sampah; deduplikasi kiriman ulang
06Pemodelan dimensionalSkema bintang Kimball: grain, fakta, dimensi, surrogate key, dimensi tanggal, dimensi seragam (conformed); normalisasi vs denormalisasi; Inmon dan Data Vault sekilasTabel lebar (OBT) dan kapan cukupSkema bintang Gudang Makmur
07Dimensi yang berubah (SCD)SCD Tipe 0/1/2/3, tanggal berlaku, join titik waktuSnapshot ala dbt, MERGE di DuckDBdim_produk SCD Tipe 2
08Muat inkremental dan CDCMuat penuh vs inkremental, kolom watermark, upsert/MERGE, CDC berbasis log, pengiriman at-least-once dan penerapan idempoten per LSN, hapus dan tombstoneDebezium dan Kafka (konsep)dim_pelanggan dari cdc_pelanggan.jsonl
09Transformasi sebagai kodeELT, lapisan staging/intermediate/mart (medali bronze/silver/gold), model sebagai graf, ref, tes, dokumentasi, lineage; "dbt mini" ditulis sendiridbt Core (Lab), SQLMesh sekilasLapisan staging → mart
10OrkestrasiDAG tugas, ketergantungan, coba ulang, tugas idempoten, backfill, penjadwalan (cron), partisi per tanggalAirflow, Dagster, Prefect (Lab), GitHub Actions terjadwalPipeline harian terjadwal (Lab)
11DataFrame berskala: Polars dan DuckDBEksekusi malas, optimasi kueri (predicate/projection pushdown), eksekusi tervektor, di luar memori, Parquet berpartisi gaya HivePolars LazyFrame, DuckDBGudang yang sama dengan Polars malas
12Pemrosesan terdistribusiMapReduce (Dean & Ghemawat 2004), shuffle, partisi dan skew, broadcast join vs shuffle hash join, model SparkSpark/Databricks (Lab), kapan DuckDB satu mesin cukupSimulasi map–shuffle–reduce
13StreamingWaktu kejadian vs waktu proses, jendela tumbling/sliding/sesi, watermark dan data terlambat (Akidau dkk. 2015), exactly-once lewat idempotensi, log KafkaKafka/Redpanda, Flink (konsep)Jendela pesanan aplikasi dengan watermark
14Lakehouse dan tata kelolaFormat tabel (snapshot, manifest, time travel, ACID di penyimpanan objek), katalog, lineage, kontrol akses, penyamaran PII, retensi (UU PDP)Apache Iceberg, Delta Lake, katalog (konsep dan Lab)Penyamaran dan retensi di gudang
15Keandalan dan biayaObservabilitas data (kesegaran, volume, skema, distribusi), SLA/SLO data, insiden data, biaya kueri (byte dipindai), menguji pipelineAlat observabilitas data, peringatanPemeriksa kesegaran, volume, dan skema
16Proyek akhir: Gudang MakmurMenyatukan: ingest, validasi, model, muat inkremental, tes, orkestrasi, tata kelolaRepo pipeline + jadwal + dokumentasi; satu sumber data publik Indonesia (Lab); Lab Tayang opsional (URL publik, README portofolio)Gudang utuh dan laporan

Proyek: Gudang Makmur

Analis Warung Makmur (C1) butuh data penjualan yang bisa dipercaya setiap pagi. Sumbernya berantakan: dua mesin kasir dengan format berbeda yang mengekspor setiap pukul 21.00 (transaksi sesudahnya masuk berkas esok hari), satu berkas yang terkirim dua kali, beberapa baris uji yang tercampur, kolom baru yang muncul pertengahan bulan, riwayat perubahan harga dan kategori produk, API pemasok yang berhalaman, aliran perubahan data pelanggan yang tiba tidak berurutan, dan event aplikasi pesan-antar yang terlambat. Peserta membangun gudang data berskema bintang di DuckDB dari semua itu. Sumber kebenarannya dataset F2: pipeline yang benar kembali tepat ke 816 transaksi, 1.516 item, dan omzet Rp14.128.200, sehingga tes bisa memeriksa kebenaran, bukan sekadar bentuk. Kontrak: proyek-gudang.md.

Kerangka setiap modul

# Modul NN · Judul

> **Hasil belajar:** 3–5 kemampuan yang bisa diamati
> **Prasyarat:** modul sebelumnya / pengetahuan
> **Waktu:** ± X jam
> **Hasil lab:** apa yang dihasilkan untuk Gudang Makmur

## Intinya                          (3–5 butir)
## 1. Masalah nyata
## 2. Konsep inti
### 2.N Di balik layar (opsional): …  (mekanisme di balik alat; boleh dilewati, kuis tidak mengujinya)
## 3. Bekerja dengan agen
### Tugas tanpa AI (cara klasik)
### Tugas dengan AI (cara modern)
### Bandingkan
## 4. Lab
### Latihan terperiksa              (≥ 6; label **Tingkat:**, minimal 2 tantangan)
### Lab proyek                      (diakhiri "Selesai bila:")
## 5. Daftar periksa review
## 6. Red flag pipeline dan kode agen
## 7. Studi kasus                   (skenario generik yang realistis)
## 8. Di skala enterprise
## 9. Kuis                          (8–10 soal, kunci + alasan)
## Sumber                           (dokumentasi resmi + rujukan klasik, "dicek 18 Oktober 2026")

Aturan isi:

  • Rekonsiliasi dengan kebenaran. Setiap tahap pipeline punya angka yang bisa dicocokkan dengan kontrak (jumlah baris mentah, duplikat, karantina, item bersih, omzet), dan tes memeriksanya. Kode awal yang naif (tanggal berkas, tanpa deduplikasi, join ke versi terkini, CDC dalam urutan tiba, jendela dengan waktu tiba) harus gagal.
  • Angka dari kode, bukan dari ingatan. Setiap angka di prosa diambil dari contoh yang diperiksa mesin (python + text keluaran).
  • Idempoten selalu diuji: menjalankan langkah dua kali memberi hasil yang sama.
  • Tulis sendiri dulu, lalu alat: urutan topologis (graphlib), eksekutor DAG, MapReduce, jendela streaming, snapshot tabel, dan tes data ditulis sendiri dan diperiksa; alat industri (dbt, Airflow, Spark, Kafka, Iceberg) dipakai di Lab.
  • Studi kasus: skenario generik yang realistis (snapshot harian, webhook pembayaran, cadangan basis data, corong produk) dengan pelajaran yang sama dengan modulnya.
  • Sumber klasik bergantian: Kimball & Ross The Data Warehouse Toolkit (ed. 3, 2013); Kleppmann Designing Data-Intensive Applications (ed. 1 2017; ed. 2 diverifikasi sebelum dirujuk); Reis & Housley Fundamentals of Data Engineering (2022); Dean & Ghemawat (2004) "MapReduce"; Akidau dkk. (2015) "The Dataflow Model"; Codd (1970); Stonebraker dkk. (2005) "C-Store"; Abadi dkk. (2013) The Design and Implementation of Modern Column-Oriented Database Systems; Kreps (2013) "The Log"; Armbrust dkk. (2021) "Lakehouse". Edisi dan bab diverifikasi.
  • Patokan CS2023: knowledge area Data Management dan Parallel and Distributed Computing.

Hubungan dengan course lain

CourseHubungan
F2Prasyarat: SQL, normalisasi, indeks, transaksi; dataset F2 adalah kebenaran Gudang Makmur
F5Docker, git, GitHub Actions, dan tayang (Lab Modul 10, 13, 16)
K1Tabel hash, pencarian biner, heap, graf dan urutan topologis
C1Konsumen gudang: analis memakai mart penjualan; UU PDP (Modul 14)
C2, C10Fitur model dan pipeline pelatihan; versi data; SLO (C10 Modul 13)
C5Agen yang menulis dan meninjau pipeline (lihat C5)