C4 · Kamus istilah
Istilah C4 · Data Engineering
Penjelasan singkat untuk istilah, fungsi, dan rumus yang dipakai di course ini. Di dalam modul, istilah bergaris titik bisa diketuk untuk melihat kartu yang sama.
Kembali ke daftar modul C4100 dari 100 istilah
anggaran galatjuga: error budget
Banyaknya kegagalan yang masih diizinkan sebuah SLO, yaitu 1 − SLO dari semua pengukuran. Selama masih ada sisa, perubahan berisiko boleh jalan; bila habis, perbaikan keandalan didahulukan.
Dipelajari di Modul 15 · Keandalan dan biaya
anti-join
Join yang menyisakan baris tabel kiri yang tidak punya pasangan di tabel kanan. Bisa ditulis
NOT EXISTS,LEFT JOIN … IS NULL, atauANTI JOIN;NOT INberbahaya bila tabel kanan memuatNULL.Contoh: mencari item yang produknya tidak ada di master produk menemukan nota uji 9001–9004.
Dipelajari di Modul 03 · SQL analitik
Arrowjuga: Apache Arrow
Tata letak tabel kolumnar di memori yang dipakai bersama oleh pyarrow, Polars, DuckDB, dan pandas, sehingga tabel bisa berpindah antarpustaka tanpa disalin. Parquet untuk disk, Arrow untuk memori.
Dipelajari di Modul 02 · Format dan penyimpanan
ASOF JOINJoin DuckDB yang, untuk setiap baris kiri, memilih satu baris kanan terdekat yang memenuhi syarat ketidaksamaan, misalnya versi produk dengan
berlaku_sejakterbesar yang tidak melewati waktu transaksi.Contoh:
ASOF JOIN riwayat r ON p.produk_id = r.produk_id AND p.waktu >= r.berlaku_sejak.Dipelajari di Modul 07 · Dimensi yang berubah (SCD)
at-least-oncejuga: setidaknya sekali
Jaminan pengiriman: setiap pesan pasti sampai, tetapi bisa lebih dari sekali, misalnya dikirim ulang saat balasan hilang. Penerima harus idempoten supaya salinan tidak terhitung dua kali.
Dipelajari di Modul 08 · Muat inkremental dan CDC
atomik
Sifat operasi yang terjadi seluruhnya atau tidak sama sekali; keadaan setengah jadi tidak pernah terlihat. Di basis data dicapai dengan transaksi; untuk berkas, dengan menulis ke berkas sementara lalu menukarnya.
Contoh:
CREATE OR REPLACE TABLEdi dalam transaksi yang gagal dibatalkanROLLBACK, jadidim_produklama tetap utuh.Dipelajari di Modul 08 · Muat inkremental dan CDC
backfill
Menjalankan pipeline untuk rentang tanggal lampau, misalnya sesudah bug diperbaiki atau saat pipeline baru dipasang. Aman hanya bila setiap tugasnya idempoten per partisi tanggal.
Contoh: memuat ulang 1–30 September, satu tanggal per run.
Dipelajari di Modul 10 · Orkestrasi
backoff eksponensialjuga: backoff
Aturan coba ulang yang menggandakan jeda setiap kali percobaan gagal, supaya server yang kewalahan diberi waktu pulih dan tidak dibanjiri permintaan.
Contoh: jeda 0,5 detik, lalu 1, 2, dan 4 detik.
Dipelajari di Modul 04 · Ingest dari berkas dan API
batchjuga: micro-batch
Cara memproses data sekumpulan sekaligus pada jadwal tertentu, misalnya sekali sehari. Micro-batch adalah batch kecil setiap beberapa menit. Lawannya streaming, yang memproses setiap event begitu tiba.
Contoh: ekspor kasir setiap pukul 21.00 adalah batch harian.
Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data
broadcast joinjuga: broadcast hash join, broadcast
Join terdistribusi yang menyalin tabel kecil utuh ke setiap pekerja, sehingga tabel besar tidak perlu dipindahkan. Murah selama tabel kecil memang kecil; lawannya shuffle join, yang mempartisi ulang kedua tabel menurut kunci join.
Contoh: menyalin
dim_produk(32 baris) ke 64 pekerja berarti 2.048 baris dikirim, lebih banyak daripada mempartisi ulang kedua tabel.Dipelajari di Modul 12 · Pemrosesan terdistribusi
byte dipindaijuga: byte yang dipindai
Banyaknya byte data yang dibaca sebuah kueri, dasar tagihan banyak gudang data cloud. Biaya kira-kira byte dipindai dikali berapa kali kueri dijalankan; partisi dan pemilihan kolom memangkasnya.
Contoh:
SELECT *atas fakta membaca 59.383 byte; satu kolom untuk satu tanggal hanya 245 byte.Dipelajari di Modul 15 · Keandalan dan biaya
CDCjuga: change data capture, aliran perubahan
Menangkap setiap perubahan di basis data sumber (buat, ubah, hapus) sebagai aliran event berurutan, biasanya dibaca dari log basis data. Gudang menerapkannya menurut urutan sumber, bukan urutan tiba.
Contoh:
cdc_pelanggan.jsonlberisi 31 event denganopbernilaic,u, ataud, masing-masing dengan nomorlsn.Dipelajari di Modul 08 · Muat inkremental dan CDC
collectMenjalankan rencana sebuah
LazyFramedan mengembalikanDataFrameberisi hasilnya. Sebelumcollect(), belum ada data yang dibaca atau dihitung.Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
commitjuga: komit
Langkah yang menjadikan perubahan resmi dan terlihat oleh pembaca lain; sebelum commit, perubahan masih bisa dibatalkan. Di format tabel, commit menukar penunjuk ke versi baru. Di Kafka, konsumen meng-commit offset pesan yang sudah selesai diproses.
Dipelajari di F2 · Modul 13 · Transaksi dan konkurensi
con.sqljuga: duckdb.sqlMenjalankan kueri DuckDB dan mengembalikan relasi: hasil yang bisa diambil dengan
.fetchall()atau.fetchone(), atau diubah menjadi DataFrame pandas dengan.df().duckdb.sqlsama, di koneksi bawaan. Di dalam SQL-nya, nama variabel DataFrame Python bisa langsung dipakai sebagai nama tabel.Dipelajari di Modul 03 · SQL analitik
cronjuga: crontab, ekspresi cron
Format jadwal lima kolom: menit, jam, tanggal, bulan, dan hari dalam minggu. GitHub Actions dan Airflow membacanya dalam UTC secara bawaan.
Contoh:
0 19 * * *berjalan pukul 19.00 UTC, yaitu pukul 02.00 WIB esok harinya.Dipelajari di Modul 10 · Orkestrasi
CTEjuga: common table expression
Kueri bantu bernama yang ditulis dengan
WITH nama AS (…)sebelum kueri utama. Berguna untuk bekerja bertahap, misalnya menaikkan grain ke transaksi dulu, baru merata-ratakan.Contoh: CTE
harianmenjumlahkan omzet per tanggal, lalu kueri utama menghitung total berjalan.Dipelajari di F2 · Modul 06 · Subquery dan CTE
DAGjuga: graf berarah tanpa siklus
Graf berarah tanpa siklus: simpul dihubungkan panah satu arah, dan tidak ada jalan yang kembali ke simpul awal. Dipakai untuk ketergantungan model SQL atau tugas pipeline: hulu harus selesai sebelum hilir.
Contoh:
stg_mesin_adanstg_mesin_b→int_pos_gabung→int_pos_unik→int_pos_bersih→mart_omzet_harian.Dipelajari di Modul 09 · Transformasi sebagai kode
data terlambatjuga: event terlambat
Data yang tiba sesudah jendela waktunya dianggap selesai. Pilihannya: dibuang, dipisahkan ke daftar koreksi, atau dipakai memperbarui hasil yang sudah dikeluarkan.
Contoh: 14 event pesanan tiba lebih dari satu jam sesudah terjadi.
Dipelajari di Modul 13 · Streaming
dbtjuga: dbt Core
Alat "transformasi sebagai kode": setiap model adalah satu berkas SQL berisi
SELECT, ketergantungannya ditulis denganref, lalu dbt menjalankan model dalam urutan topologis, menguji hasilnya, dan membuat dokumentasi.Dipelajari di Modul 09 · Transformasi sebagai kode
deduplikasijuga: mendeduplikasi
Membuang salinan sehingga setiap kejadian tersisa satu kali, biasanya menurut kunci alami, dengan aturan tertulis tentang salinan mana yang dipertahankan.
Contoh: kiriman ulang berkas 10 September membuat 9 item ganda; deduplikasi per (
transaksi_id,produk_id) mempertahankan kemunculan pertama.Dipelajari di Modul 05 · Validasi, kualitas, dan kontrak data
dimensijuga: tabel dimensi
Di skema bintang, tabel konteks yang menjawab siapa, apa, dan kapan sebuah fakta: nama dan kategori produk, data pelanggan, atau tanggal. Di bahasan kualitas data, dimensi berarti satu sisi kualitas yang diuji, seperti kelengkapan atau keunikan.
Contoh:
dim_produkberisi 36 versi untuk 32 produk.Dipelajari di Modul 06 · Pemodelan dimensional
drop_duplicatesMetode pandas yang membuang baris ganda dan menyisakan satu per kelompok;
keep="first"mempertahankan kemunculan pertama. Kolom yang dibandingkan ditentukan oleh argumen pertamanya (subset).Contoh:
pos.drop_duplicates(["transaksi_id", "produk_id"])membuang 9 item kiriman ulang.Dipelajari di Modul 05 · Validasi, kualitas, dan kontrak data
DuckDB
Basis data analitik yang berjalan di dalam program Python tanpa server, seperti SQLite, tetapi kolumnar dan cepat untuk agregasi. Ia bisa membaca CSV, Parquet, dan DataFrame langsung dengan SQL.
Contoh:
read_csv('pos_harian/mesin_a_*.csv', …)membaca semua berkas mesin A sekaligus.Dipelajari di Modul 03 · SQL analitik
duckdb.connectMembuka koneksi DuckDB. Tanpa argumen, basis datanya ada di memori dan hilang saat program selesai; dengan nama berkas, misalnya
duckdb.connect("gudang.duckdb"), isinya tersimpan di berkas itu.Contoh:
con = duckdb.connect()lalucon.execute("CREATE TABLE …").Dipelajari di Modul 03 · SQL analitik
eksekusi malasjuga: malas, lazy
Cara kerja yang menunda perhitungan: perintah hanya membangun rencana, dan data baru dibaca saat hasilnya diminta. Pengoptimal sempat menulis ulang rencana itu, misalnya mendorong saringan dan pemilihan kolom ke pembacaan berkas.
Contoh:
pl.scan_csv(...).filter(...).select(...)belum membaca apa pun sampaicollect().Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
exactly-oncejuga: tepat sekali
Hasil yang seolah setiap pesan diproses tepat satu kali. Dalam praktik dicapai dengan pengiriman at-least-once ditambah penerapan idempoten, misalnya mengabaikan
event_idyang sudah pernah diterapkan.Contoh: walau 150 baris log dibaca ulang, nilai pesanan selesai tetap Rp14.294.000.
Dipelajari di Modul 13 · Streaming
executejuga: con.executeMenjalankan satu perintah SQL lewat koneksi, misalnya
CREATE TABLEatauINSERT. Nilai dari luar dikirim lewat tanda?beserta list nilainya, bukan disambung ke teks SQL. HasilSELECTdiambil denganfetchone()ataufetchall().Contoh:
con.execute("DELETE FROM fakta_harian WHERE tanggal = ?", [tanggal]).Dipelajari di F2 · Modul 14 · SQL dari Python
EXPLAINAwalan kueri yang meminta mesin menampilkan rencana kuerinya alih-alih hasil: urutan operator, saringan yang didorong ke pemindai, dan berkas yang dibaca. Rencana dibaca dari bawah ke atas.
Contoh:
con.sql("EXPLAIN " + sql).fetchall()[0][1]memberi teks rencana DuckDB.Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
fungsi jendelajuga: window function
Fungsi SQL yang menghitung nilai untuk setiap baris dengan melihat baris lain di kelompoknya (
OVER (PARTITION BY … ORDER BY …)), tanpa meringkas baris menjadi satu sepertiGROUP BY.Contoh:
LAG(omzet) OVER (ORDER BY tanggal)memberi omzet hari sebelumnya di setiap baris.Dipelajari di F2 · Modul 07 · Window function
grain
Pernyataan tepat tentang arti satu baris sebuah tabel: "satu baris adalah …". Grain menentukan kolom mana yang harus unik dan apa yang boleh dijumlahkan.
Contoh: grain ekspor kasir adalah satu item transaksi, jadi 1.516 baris bersih berarti 1.516 item dari 816 transaksi.
Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data
group_byMengelompokkan baris DataFrame Polars menurut satu kolom atau lebih;
.agg(...)lalu menghitung satu baris ringkasan per kelompok dari ekspresi yang diberikan.Contoh:
.group_by("transaksi_id").agg(pl.col("subtotal").sum())memberi total belanja per nota.Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
gudang datajuga: gudang, data warehouse
Basis data yang dirancang untuk dibaca dan dianalisis, bukan untuk mencatat transaksi satu per satu. Isinya dikumpulkan dari banyak sumber, dibersihkan, lalu disusun supaya kueri laporan cepat dan angkanya bisa dipercaya.
Contoh: Gudang Makmur di DuckDB menyatukan ekspor dua mesin kasir, riwayat produk, dan data pelanggan.
Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data
hak hapusjuga: hak untuk dihapus
Hak pemilik data pribadi untuk meminta datanya dihapus. Di gudang data, permintaan itu harus menjangkau semua tempat datanya tersimpan: dimensi, fakta, berkas mentah, snapshot lama, log, dan cadangan.
Contoh: pelanggan 5 sudah dihapus dari tabel pelanggan, tetapi masih tercatat di 55 item penjualan.
Dipelajari di Modul 14 · Lakehouse dan tata kelola
hashjuga: nilai hash, fungsi hash
Fungsi yang mengubah data apa pun menjadi angka atau teks berukuran tetap; masukan yang sama memberi hasil yang sama. Dipakai untuk mencari cepat di tabel hash, membagi baris ke partisi, dan membuat sidik jari.
Contoh:
zlib.crc32(kunci.encode()) % 4memilih satu dari empat partisi untuk setiap kunci.Dipelajari di K1 · Modul 06 · Tabel hash
hash join
Cara mesin kueri menggabungkan dua tabel: sisi kecil dimasukkan ke tabel hash berkunci kolom join (fase bangun), lalu sisi besar dibaca sekali dan setiap kuncinya dicari di tabel itu (fase selidik). Jauh lebih cepat daripada membandingkan setiap pasangan baris.
Dipelajari di Modul 03 · SQL analitik
hashlib.sha256Fungsi pustaka standar Python yang menghitung SHA-256 dari data byte;
.hexdigest()menuliskannya sebagai 64 karakter heksadesimal.Contoh:
hashlib.sha256(p.read_bytes()).hexdigest()memberi sidik isi satu berkas.Dipelajari di Modul 04 · Ingest dari berkas dan API
HMACjuga: HMAC-SHA256, HMAC berkunci
Hash yang dihitung bersama kunci rahasia. Tanpa kunci, orang tidak bisa menghitung ulang atau membalik hasilnya walau ruang masukannya kecil; dengan kunci yang sama, nilai yang sama selalu memberi kode yang sama, jadi tabel tetap bisa di-join.
Contoh:
pelanggan_iddisamarkan menjadi 16 karakter heksadesimal pertama HMAC-SHA256.Dipelajari di Modul 14 · Lakehouse dan tata kelola
idempotenjuga: idempotensi, idempotent
Sifat langkah yang hasilnya sama walau dijalankan dua kali atau lebih: dua kali sama dengan sekali. Penting karena pipeline sering terulang: server mati di tengah jalan, jadwal terpicu dua kali, berkas dikirim ulang.
Contoh: memuat batch yang sama dua kali dengan upsert tetap memberi 2 baris; dengan
INSERTbiasa menjadi 4.Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data
ingest
Tahap memindahkan data dari sistem sumber ke penyimpananmu, misalnya membaca folder ekspor atau memanggil API. Data biasanya disimpan apa adanya dulu, baru diubah di tahap berikutnya.
Contoh: menyalin
mesin_a_2026-09-30.csvke folder mentah, atau mengambil lima halaman JSON dari API pemasok.Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data
Int64Tipe bilangan bulat pandas yang boleh kosong (huruf I besar), dan harus diminta lewat
dtype; nilai kosongnya tampil<NA>.int64biasa tidak bisa menyimpan kosong. Di Polars,pl.Int64adalah bilangan bulat 64 bit biasa.Contoh:
dtype={"id_pelanggan": "Int64"}untuk pembeli umum yang tidak punya id.Dipelajari di Modul 02 · Format dan penyimpanan
interval setengah terbukajuga: setengah terbuka
Rentang
[awal, akhir): titik awal ikut, titik akhir tidak. Dua versi atau dua jendela berurutan bisa bersambung tepat di satu titik tanpa celah dan tanpa tumpang tindih.Contoh: versi lama gula berlaku sampai 22 September 11.39.39 (tidak termasuk), versi baru sejak 11.39.39 (termasuk).
Dipelajari di Modul 07 · Dimensi yang berubah (SCD)
join titik waktujuga: point-in-time join
Join yang memilih versi dimensi yang berlaku pada waktu transaksi, bukan versi terkini. Syaratnya:
berlaku_sejak ≤ waktu < berlaku_sampai.Contoh: penjualan gula sebelum 22 September tersambung ke harga Rp17.500, sesudahnya ke Rp18.500.
Dipelajari di Modul 07 · Dimensi yang berubah (SCD)
JSON Linesjuga: JSONL
Format berkas teks dengan satu objek JSON per baris. Berkas bisa ditambah di ujung dan dibaca baris demi baris; satu baris rusak tidak merusak baris lain.
Contoh:
cdc_pelanggan.jsonlberisi 31 event perubahan pelanggan danevent_aplikasi.jsonlberisi 673 event pesanan.Dipelajari di Modul 02 · Format dan penyimpanan
Kafkajuga: Apache Kafka
Sistem log terdistribusi untuk aliran event: pesan ditambahkan di ujung log, dibagi ke beberapa partisi menurut kunci, dan setiap pesan punya offset. Konsumen membaca berurutan dan mencatat sampai offset mana mereka sudah selesai.
Dipelajari di Modul 13 · Streaming
karantinajuga: dead-letter queue, dead-letter
Tabel terpisah untuk baris yang gagal aturan validasi, disimpan apa adanya bersama alasannya. Baris tidak dibuang diam-diam dan tidak "dibetulkan" dengan tebakan; setiap baris ada di tepat satu tempat: bersih atau karantina.
Contoh: nota uji 9001–9004 dengan produk 999 masuk karantina beralasan "produk tidak dikenal".
Dipelajari di Modul 05 · Validasi, kualitas, dan kontrak data
kesegaranjuga: freshness, umur data
Jarak antara saat sesuatu terjadi dan saat ia bisa ditanyakan di gudang data. Diukur sebagai umur data: waktu pemeriksaan dikurangi cap waktu data terbaru, bukan dari status job.
Contoh: diperiksa pukul 06.00, transaksi terbaru pukul 21.38 kemarin, jadi umur datanya 8 jam 21 menit.
Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data
kolumnarjuga: penyimpanan kolom, tata letak kolom
Cara menyimpan tabel per kolom: semua nilai satu kolom berdampingan. Kueri yang membaca sedikit kolom dari banyak baris jadi cepat, dan nilai sejenis mudah dikompresi. Lawannya tata letak baris, seperti CSV.
Contoh: menjumlahkan
jumlah × harga_satuancukup membaca dua kolom, bukan semua kolom ekspor kasir.Dipelajari di Modul 02 · Format dan penyimpanan
kontrak data
Kesepakatan tertulis antara pemilik sumber (produsen) dan pemakai data (konsumen): skema, arti kolom, aturan nilai, janji waktu, pemilik, dan aturan perubahan. Kolom tambahan biasanya boleh; menghapus kolom atau mengubah tipenya butuh versi kontrak baru.
Dipelajari di Modul 05 · Validasi, kualitas, dan kontrak data
kunci alamijuga: natural key
Kolom, atau gabungan kolom, dari dunia nyata yang mengenali satu kejadian secara unik, seperti nomor nota. Dipakai untuk menemukan baris ganda dan untuk memperbarui baris yang sama.
Contoh: kunci alami item kasir adalah (
transaksi_id,produk_id); sembilan kunci muncul dua kali karena satu berkas dikirim ulang.Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data
lakehouse
Arsitektur yang menyimpan data sebagai berkas murah, misalnya Parquet di penyimpanan objek, lalu menambahkan sifat gudang data di atasnya lewat format tabel seperti Apache Iceberg atau Delta Lake: commit atomik, skema, dan time travel.
Dipelajari di Modul 14 · Lakehouse dan tata kelola
LazyFrameTabel Polars versi malas:
filter,select, danwith_columnshanya menambah langkah ke rencana kueri, dan tidak ada data yang dibaca sampaicollect(). Rencananya bisa dilihat dengan.explain().Contoh:
pl.scan_csv(...)mengembalikanLazyFrame.Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
ledakan barisjuga: ledakan
Bertambahnya baris diam-diam saat join karena kunci di sisi yang seharusnya unik ternyata muncul lebih dari sekali. Setiap kunci menghasilkan banyak baris kiri × banyak baris kanan, sehingga total uang ikut berlipat tanpa galat.
Contoh: join 1.516 item ke 36 versi produk hanya menurut
produk_idmemberi 1.627 baris.Dipelajari di Modul 06 · Pemodelan dimensional
lineage
Jejak asal-usul data: tabel atau kolom mana dihitung dari mana. Dipakai untuk analisis dampak (apa yang terdampak bila sumber berubah) dan untuk mencari akar masalah angka yang salah.
Contoh: hulu
mart_omzet_harianadalahint_pos_bersih,int_pos_unik,int_pos_gabung,stg_mesin_a,stg_mesin_b, danstg_produk.Dipelajari di Modul 09 · Transformasi sebagai kode
LSNjuga: log sequence number
Nomor urut yang diberikan basis data sumber kepada setiap perubahan di lognya. LSN memberi urutan yang pasti: event diterapkan menurut LSN, dan event ber-LSN lama yang tiba lagi diabaikan.
Contoh: hapus pelanggan 5 ber-LSN 1025, jadi salinan event buat ber-LSN 1005 yang tiba belakangan tidak menghidupkannya lagi.
Dipelajari di Modul 08 · Muat inkremental dan CDC
manifest
Daftar yang mencatat berkas mana yang sudah dimuat atau menjadi bagian satu versi tabel. Di ingest, manifest menyimpan sidik setiap berkas yang sudah dimuat sehingga berkas yang sama dilewati; di format tabel, manifest mendaftar berkas data milik satu snapshot.
Contoh: tabel
berkas_dimuat(sha256, nama)membuat jalan kedua tidak memuat apa pun.Dipelajari di Modul 04 · Ingest dari berkas dan API
MapReduce
Model pemrosesan terdistribusi: fungsi map mengubah setiap rekaman menjadi pasangan (kunci, nilai), sistem mengumpulkan pasangan berkunci sama ke satu pekerja (shuffle), lalu fungsi reduce menggabungkan semua nilai satu kunci.
Contoh: map mengeluarkan (tanggal, subtotal); reduce menjumlahkan semua subtotal 29 September dari tiga berkas menjadi 16.500.
Dipelajari di Modul 12 · Pemrosesan terdistribusi
martjuga: data mart
Lapisan paling akhir gudang data: tabel siap pakai dengan grain yang dipahami analis, misalnya ringkasan per hari. Semua laporan memakai mart yang sama supaya definisi metrik hanya ditulis sekali.
Contoh:
mart_omzet_harianberisi 30 baris, satu per tanggal transaksi September.Dipelajari di Modul 09 · Transformasi sebagai kode
MERGEPerintah SQL yang mencocokkan baris sumber dengan tabel tujuan lewat syarat
ON, lalu memilih aksi untuk setiap pasangan:WHEN MATCHED THEN UPDATE …atauWHEN NOT MATCHED THEN INSERT …. Berbeda denganINSERT … ON CONFLICT, ia tidak butuh kunci unik.Dipelajari di Modul 07 · Dimensi yang berubah (SCD)
muat inkrementaljuga: inkremental, pemuatan inkremental
Memuat hanya data yang baru atau berubah sejak muatan terakhir, bukan membaca ulang semuanya. Butuh penanda sampai mana data sudah dimuat, seperti watermark atau manifest, dan pemuatan yang idempoten.
Dipelajari di Modul 08 · Muat inkremental dan CDC
offset
Nomor posisi yang dihitung dari awal. Di paginasi, offset adalah banyak barang yang dilewati sebelum halaman dimulai, dan rapuh bila daftarnya bergeser. Di log Kafka, offset adalah nomor urut pesan dalam satu partisi, yang dicatat konsumen agar tahu harus lanjut dari mana.
Dipelajari di Modul 04 · Ingest dari berkas dan API
orkestratorjuga: orkestrasi
Program yang menjalankan tugas-tugas pipeline sesuai jadwal dan ketergantungannya, mencoba ulang tugas yang gagal, melewati hilir dari tugas yang gagal, dan mencatat status setiap run.
Contoh: Airflow, Dagster, Prefect, atau eksekutor DAG mini yang kamu tulis sendiri.
Dipelajari di Modul 10 · Orkestrasi
Parquet
Format berkas kolumnar untuk data analitik. Baris dibagi menjadi row group, setiap kolom disimpan berdampingan dan dikompresi, dan bagian akhir berkas (footer) mencatat skema serta nilai terkecil dan terbesar setiap kolom, sehingga pembaca bisa melewati bagian yang tidak perlu.
Contoh: 721 item mesin A ditulis menjadi
pos_a.parquetberisi 4 row group.Dipelajari di Modul 02 · Format dan penyimpanan
ParquetFilejuga: pq.ParquetFileKelas pyarrow untuk membuka berkas Parquet.
.metadatahanya membaca footer: banyak baris, row group, kolom, dan statistik setiap column chunk, tanpa membaca datanya.Contoh:
pq.ParquetFile("pos_a.parquet").metadata.num_row_groupsbernilai 4.Dipelajari di Modul 02 · Format dan penyimpanan
partisijuga: berpartisi
Potongan data yang dipisahkan menurut nilai satu kunci, misalnya satu tanggal atau satu hasil hash, sehingga bisa dibaca, diganti, atau diproses sendiri tanpa menyentuh potongan lain.
Contoh: tugas harian menghapus partisi
tanggal = 2026-09-30lalu mengisinya lagi dalam satu transaksi.Dipelajari di Modul 10 · Orkestrasi
partisi gaya Hivejuga: gaya Hive, partisi Hive
Tata letak folder yang menulis nilai kolom partisi di nama folder, misalnya
tanggal=2026-09-30/0.parquet. Saringan pada kolom itu membuat mesin kueri melewati seluruh folder lain (partition pruning).Contoh: kueri omzet 30 September hanya memindai 1 dari 30 berkas.
Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
pipeline
Rangkaian langkah otomatis yang membawa data dari sumber sampai siap dipakai: membaca, membersihkan, menggabungkan, lalu menyimpan. Pipeline yang baik bisa dijalankan ulang kapan saja, dan setiap tahapnya punya angka yang bisa dicocokkan.
Contoh: berkas kasir → buang baris ganda → sisihkan baris sampah → 1.516 item bersih → laporan omzet harian.
Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data
pl.colMenunjuk satu kolom, atau beberapa, di ekspresi Polars. Ekspresi itu bisa dihitung per baris, diagregasi, diubah tipenya, atau diberi nama baru.
Contoh:
(pl.col("jumlah") * pl.col("harga_satuan")).sum()menghitung omzet.Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
Polars
Pustaka DataFrame yang kolumnar dan cepat dengan dua cara kerja:
DataFrameyang langsung menghitung, danLazyFrameyang membangun rencana dulu lalu mengoptimasinya sebelum dijalankan.Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
predicate pushdownjuga: dorong predikat
Optimasi yang memindahkan syarat
WHEREsedekat mungkin ke pembacaan data, sehingga baris atau row group yang pasti tidak cocok tidak pernah dibaca.Contoh: saringan
waktu >= '2026-09-25'dijalankan di dalam pembaca Parquet DuckDB, dan dua dari empat row group dilewati.Dipelajari di Modul 02 · Format dan penyimpanan
projection pushdownjuga: dorong proyeksi
Optimasi yang membuat pembaca hanya mengambil kolom yang benar-benar dipakai kueri. Di format kolumnar, kolom lain tidak disentuh sama sekali.
Contoh: rencana Polars yang sudah dioptimasi hanya membaca 4 dari 8 kolom CSV mesin A.
Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
QUALIFYKlausa DuckDB untuk menyaring hasil fungsi jendela, seperti
HAVINGuntuk hasilGROUP BY. Dipakai untuk deduplikasi, top-N per kelompok, dan versi terkini.Contoh:
QUALIFY ROW_NUMBER() OVER (PARTITION BY transaksi_id, produk_id ORDER BY sumber_berkas) = 1menyisakan 1.520 kunci dari 1.529 baris.Dipelajari di Modul 03 · SQL analitik
read_csvjuga: pd.read_csvPembaca CSV. Di pandas (
pd.read_csv), argumen sepertisep,dtype, danna_valuesmenuliskan aturan baca alih-alih menebak. Di DuckDB,read_csv('pola*.csv', …)dipakai di dalamFROMdan bisa membaca banyak berkas sekaligus.Contoh:
pd.read_csv(path, sep=";", na_values=["-"])untuk berkas mesin B.Dipelajari di Modul 02 · Format dan penyimpanan
registerjuga: con.registerMemberi nama tabel kepada DataFrame pandas di satu koneksi DuckDB, sehingga DataFrame itu bisa dipakai di SQL.
con.unregister(nama)menghapus nama itu lagi.Contoh:
con.register("pos", pos)laluSELECT … FROM pos.rekonsiliasijuga: merekonsiliasi, direkonsiliasi
Mencocokkan angka hasil pipeline dengan angka yang sudah diketahui di setiap tahap, misalnya banyak baris dan jumlah uang. Selisih berarti ada baris yang hilang, ganda, atau berubah.
Contoh: 1.529 baris mentah = 9 ganda + 4 karantina + 1.516 bersih, dan omzet Rp14.128.200 sama dengan dataset F2.
Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data
retensi
Aturan berapa lama data disimpan sebelum dihapus atau disamarkan. Aturannya bisa berbeda per jenis data dan per tempat penyimpanan: berkas mentah, gudang, log, dan cadangan.
Dipelajari di Modul 14 · Lakehouse dan tata kelola
row group
Potongan horizontal berkas Parquet: sekumpulan baris yang kolom-kolomnya disimpan bersama. Footer mencatat nilai terkecil dan terbesar setiap kolom per row group, jadi row group yang pasti tidak berisi baris yang dicari bisa dilewati.
Contoh: dengan
row_group_size=200, item mesin A yang terurut waktu menjadi 4 row group, dan kueri "sejak 25 September" cukup membaca 2.Dipelajari di Modul 02 · Format dan penyimpanan
scan_csvjuga: pl.scan_csv, scan_parquet, pl.scan_parquetPembaca berkas Polars yang malas: mengembalikan
LazyFrametanpa membaca isi berkas.scan_parquetmelakukan hal yang sama untuk Parquet. Karena malas, pengoptimal bisa membaca hanya kolom dan baris yang dibutuhkan.Contoh:
pl.scan_csv("pos_harian/mesin_a_2026-09-0*.csv")mencakup sembilan berkas.Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
SCDjuga: slowly changing dimension
Cara menangani atribut dimensi yang berubah dari waktu ke waktu, misalnya harga atau kategori produk. Tipe 0 tidak pernah mengubah nilai, Tipe 1 menimpa nilai lama sehingga riwayatnya hilang, dan Tipe 2 menambah baris versi baru.
Dipelajari di Modul 07 · Dimensi yang berubah (SCD)
SCD Tipe 2juga: SCD2, Tipe 2
Dimensi yang menyimpan setiap versi sebagai baris sendiri, dengan
berlaku_sejak,berlaku_sampai, dan penandaterkini. Transaksi lama tetap tersambung ke versi yang berlaku saat transaksi itu terjadi.Contoh:
dim_produkpunya 36 versi untuk 32 produk karena empat produk berubah harga, kategori, atau status selama September.Dipelajari di Modul 07 · Dimensi yang berubah (SCD)
SHA-256
Fungsi hash kriptografis yang menghasilkan 256 bit, biasa ditulis sebagai 64 karakter heksadesimal. Dua isi berbeda praktis tidak pernah memberi hasil sama, jadi cocok untuk mengenali isi berkas atau baris.
Contoh:
mesin_b_2026-09-10.csvdanmesin_b_2026-09-10_ulang.csvpunya SHA-256 yang sama: isinya kembar.Dipelajari di Modul 04 · Ingest dari berkas dan API
shuffle
Tahap memindahkan data antarpekerja supaya semua baris berkunci sama berkumpul di pekerja yang sama. Biasanya tahap termahal, karena lewat jaringan dan harus menunggu semua pengirim.
Contoh: dengan combiner, pasangan yang dikirim lewat shuffle turun dari 1.516 menjadi 80.
Dipelajari di Modul 12 · Pemrosesan terdistribusi
sidik jarijuga: sidik
Nilai hash dari isi sesuatu (berkas, baris, atau seluruh tabel) yang dipakai sebagai identitasnya. Isi sama memberi sidik sama walau namanya berbeda; satu nilai berubah, sidiknya ikut berubah.
Contoh: sidik jari isi tabel fakta yang sama pada run pertama dan kedua membuktikan pemuatannya idempoten.
Dipelajari di Modul 04 · Ingest dari berkas dan API
skema bintangjuga: star schema
Rancangan gudang data dengan satu tabel fakta di tengah, dikelilingi tabel dimensi yang dihubungkan lewat kunci. Kuerinya selalu berbentuk sama: gabungkan fakta ke dimensi, lalu saring dan kelompokkan menurut atribut dimensi.
Contoh:
fakta_penjualandi tengah, dikelilingidim_produk,dim_tanggal, dandim_pelanggan.Dipelajari di Modul 06 · Pemodelan dimensional
skewjuga: ketimpangan partisi
Ketimpangan ukuran partisi: satu partisi jauh lebih besar dari rata-rata, sehingga pekerja lain menganggur menunggunya. Diukur sebagai rasio partisi terbesar terhadap rata-rata; 1,0 berarti seimbang.
Contoh: membagi item menurut
kasir_idmemberi rasio 2,10; menuruttransaksi_id1,04.Dipelajari di Modul 12 · Pemrosesan terdistribusi
SLOjuga: service level objective
Target terukur atas satu ukuran layanan (SLI) dalam jendela waktu tertentu, misalnya "mart siap paling lambat 06.00 pada sedikitnya 95% hari dalam 28 hari". SLA adalah janji kepada pihak lain beserta akibatnya bila dilanggar.
Dipelajari di Modul 15 · Keandalan dan biaya
snapshot
Salinan keadaan data pada satu saat. Snapshot harian menyimpan isi tabel setiap hari; di format tabel lakehouse, setiap commit membuat snapshot baru yang tetap bisa dibaca belakangan.
Contoh: tabel snapshot buatan tangan punya versi 1, 2, dan 3, dan versi 2 masih bisa dibaca walau versi terbarunya 3.
Dipelajari di Modul 07 · Dimensi yang berubah (SCD)
streaming
Cara memproses data sebagai aliran yang tidak pernah selesai: setiap event diproses begitu tiba, tanpa menunggu kumpulan harian. Karena alirannya tak berujung, hasil dihitung per jendela waktu.
Contoh: event pesanan aplikasi pesan-antar sepanjang 30 September dihitung per jam.
Dipelajari di Modul 13 · Streaming
surrogate keyjuga: kunci pengganti
Kunci buatan gudang, biasanya bilangan bulat berurutan, untuk setiap baris dimensi, terpisah dari kunci alami sumber. Satu produk bisa punya beberapa versi, masing-masing dengan kunci penggantinya sendiri.
Contoh: gula (
produk_id13) punyaproduk_sk13 untuk harga Rp17.500 danproduk_sk14 untuk harga Rp18.500.Dipelajari di Modul 06 · Pemodelan dimensional
tabel faktajuga: fakta
Tabel yang mencatat kejadian bisnis yang bisa diukur, satu baris per grain, berisi angka ukuran dan kunci ke tabel dimensi. Biasanya tabel terbesar dan terus bertambah.
Contoh:
fakta_penjualanberisi satu baris per item transaksi:jumlah,harga_satuan,subtotal, danproduk_sk.Dipelajari di Modul 06 · Pemodelan dimensional
tes data
Kueri yang mengembalikan baris yang melanggar aturan; nol baris berarti lulus. Tes data dijalankan atas tabel jadi setiap kali pipeline berjalan, dan harus terbukti bisa gagal.
Contoh: tes keunikan (
transaksi_id,produk_id) mengembalikan 9 baris di tabel mentah dan 0 di tabel bersih.Dipelajari di Modul 05 · Validasi, kualitas, dan kontrak data
time travel
Kemampuan membaca tabel seperti pada versi atau waktu lampau. Mungkin karena berkas data tidak pernah diubah dan setiap versi menyimpan daftar berkasnya sendiri.
Contoh: sesudah koreksi, versi 3 memberi omzet 30 September 0, tetapi versi 2 masih memberi Rp417.800.
Dipelajari di Modul 14 · Lakehouse dan tata kelola
TopologicalSorterjuga: graphlib.TopologicalSorterKelas pustaka standar
graphlibyang menyusun urutan topologis dari peta "simpul → himpunan hulunya".prepare()memeriksa siklus,get_ready()memberi simpul yang siap dikerjakan, dandone()menandai simpul selesai.Dipelajari di Modul 09 · Transformasi sebagai kode
union_by_nameOpsi
read_csvdanread_parquetDuckDB yang menyatukan banyak berkas menurut nama kolom, bukan posisinya. Kolom yang tidak ada di sebagian berkas diisiNULL.Contoh: kolom
diskonyang baru muncul 15 September bernilaiNULLuntuk berkas mesin A sebelumnya.Dipelajari di Modul 03 · SQL analitik
upsert
Gabungan insert dan update: sisipkan baris baru, atau perbarui baris lama bila kuncinya sudah ada. Di SQL ditulis dengan
INSERT … ON CONFLICTatauMERGE. Upsert idempoten terhadap kunci: memuat baris yang sama lagi tidak menambah baris.Dipelajari di Modul 08 · Muat inkremental dan CDC
urutan topologis
Urutan simpul DAG yang menempatkan setiap simpul sesudah semua hulunya. Sering ada lebih dari satu urutan yang sah, jadi pipeline butuh aturan pemecah seri yang pasti, misalnya nama terkecil dulu.
Dipelajari di Modul 09 · Transformasi sebagai kode
waktu kejadianjuga: event time
Saat sesuatu benar-benar terjadi, dicatat oleh perangkat sumber. Lawannya waktu tiba atau waktu proses: saat server menerimanya. Laporan dan jendela streaming dihitung menurut waktu kejadian.
Contoh: jam 13 punya 34 pesanan menurut waktu kejadian, tetapi hanya 30 menurut waktu tiba.
Dipelajari di Modul 13 · Streaming
watermark
Penanda batas yang punya dua arti. Di muat inkremental: nilai terbesar sebuah kolom yang sudah dimuat, misalnya
waktuterakhir. Di streaming: kelonggaran waktu yang ditunggu sebelum sebuah jendela ditutup dan dianggap lengkap.Dipelajari di Modul 08 · Muat inkremental dan CDC
with_columnsMenambah kolom baru, atau mengganti kolom lama, di DataFrame atau LazyFrame Polars dari ekspresi, tanpa membuang kolom lain.
Contoh:
.with_columns(pl.col("waktu").dt.date().alias("tanggal"))menambah kolomtanggal.Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB
zlib.crc32juga: crc32Fungsi pustaka standar yang mengubah data byte menjadi bilangan bulat 32 bit. Hasilnya tidak diacak per proses, jadi cocok untuk memilih partisi dengan sisa bagi.
Contoh:
zlib.crc32(kunci.encode("utf-8")) % 4.Dipelajari di Modul 12 · Pemrosesan terdistribusi