Lewati ke konten utama

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 C4

100 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, atau ANTI JOIN; NOT IN berbahaya bila tabel kanan memuat NULL.

    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 JOIN

    Join DuckDB yang, untuk setiap baris kiri, memilih satu baris kanan terdekat yang memenuhi syarat ketidaksamaan, misalnya versi produk dengan berlaku_sejak terbesar 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 TABLE di dalam transaksi yang gagal dibatalkan ROLLBACK, jadi dim_produk lama 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.jsonl berisi 31 event dengan op bernilai c, u, atau d, masing-masing dengan nomor lsn.

    Dipelajari di Modul 08 · Muat inkremental dan CDC

  • collect

    Menjalankan rencana sebuah LazyFrame dan mengembalikan DataFrame berisi hasilnya. Sebelum collect(), 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.sql

    Menjalankan kueri DuckDB dan mengembalikan relasi: hasil yang bisa diambil dengan .fetchall() atau .fetchone(), atau diubah menjadi DataFrame pandas dengan .df(). duckdb.sql sama, 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 harian menjumlahkan 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_a dan stg_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 dengan ref, 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_produk berisi 36 versi untuk 32 produk.

    Dipelajari di Modul 06 · Pemodelan dimensional

  • drop_duplicates

    Metode 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.connect

    Membuka 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() lalu con.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 sampai collect().

    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_id yang sudah pernah diterapkan.

    Contoh: walau 150 baris log dibaca ulang, nilai pesanan selesai tetap Rp14.294.000.

    Dipelajari di Modul 13 · Streaming

  • executejuga: con.execute

    Menjalankan satu perintah SQL lewat koneksi, misalnya CREATE TABLE atau INSERT. Nilai dari luar dikirim lewat tanda ? beserta list nilainya, bukan disambung ke teks SQL. Hasil SELECT diambil dengan fetchone() atau fetchall().

    Contoh: con.execute("DELETE FROM fakta_harian WHERE tanggal = ?", [tanggal]).

    Dipelajari di F2 · Modul 14 · SQL dari Python

  • EXPLAIN

    Awalan 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 seperti GROUP 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_by

    Mengelompokkan 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()) % 4 memilih 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.sha256

    Fungsi 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_id disamarkan 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 INSERT biasa 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.csv ke folder mentah, atau mengambil lima halaman JSON dari API pemasok.

    Dipelajari di Modul 01 · Peran data engineer dan siklus hidup data

  • Int64

    Tipe bilangan bulat pandas yang boleh kosong (huruf I besar), dan harus diminta lewat dtype; nilai kosongnya tampil <NA>. int64 biasa tidak bisa menyimpan kosong. Di Polars, pl.Int64 adalah 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.jsonl berisi 31 event perubahan pelanggan dan event_aplikasi.jsonl berisi 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_satuan cukup 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

  • LazyFrame

    Tabel Polars versi malas: filter, select, dan with_columns hanya menambah langkah ke rencana kueri, dan tidak ada data yang dibaca sampai collect(). Rencananya bisa dilihat dengan .explain().

    Contoh: pl.scan_csv(...) mengembalikan LazyFrame.

    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_id memberi 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_harian adalah int_pos_bersih, int_pos_unik, int_pos_gabung, stg_mesin_a, stg_mesin_b, dan stg_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_harian berisi 30 baris, satu per tanggal transaksi September.

    Dipelajari di Modul 09 · Transformasi sebagai kode

  • MERGE

    Perintah SQL yang mencocokkan baris sumber dengan tabel tujuan lewat syarat ON, lalu memilih aksi untuk setiap pasangan: WHEN MATCHED THEN UPDATE … atau WHEN NOT MATCHED THEN INSERT …. Berbeda dengan INSERT … 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.parquet berisi 4 row group.

    Dipelajari di Modul 02 · Format dan penyimpanan

  • ParquetFilejuga: pq.ParquetFile

    Kelas pyarrow untuk membuka berkas Parquet. .metadata hanya membaca footer: banyak baris, row group, kolom, dan statistik setiap column chunk, tanpa membaca datanya.

    Contoh: pq.ParquetFile("pos_a.parquet").metadata.num_row_groups bernilai 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-30 lalu 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.col

    Menunjuk 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: DataFrame yang langsung menghitung, dan LazyFrame yang membangun rencana dulu lalu mengoptimasinya sebelum dijalankan.

    Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB

  • predicate pushdownjuga: dorong predikat

    Optimasi yang memindahkan syarat WHERE sedekat 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

  • QUALIFY

    Klausa DuckDB untuk menyaring hasil fungsi jendela, seperti HAVING untuk hasil GROUP 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) = 1 menyisakan 1.520 kunci dari 1.529 baris.

    Dipelajari di Modul 03 · SQL analitik

  • read_csvjuga: pd.read_csv

    Pembaca CSV. Di pandas (pd.read_csv), argumen seperti sep, dtype, dan na_values menuliskan aturan baca alih-alih menebak. Di DuckDB, read_csv('pola*.csv', …) dipakai di dalam FROM dan 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.register

    Memberi 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) lalu SELECT … 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_parquet

    Pembaca berkas Polars yang malas: mengembalikan LazyFrame tanpa membaca isi berkas. scan_parquet melakukan 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 penanda terkini. Transaksi lama tetap tersambung ke versi yang berlaku saat transaksi itu terjadi.

    Contoh: dim_produk punya 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.csv dan mesin_b_2026-09-10_ulang.csv punya 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_penjualan di tengah, dikelilingi dim_produk, dim_tanggal, dan dim_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_id memberi rasio 2,10; menurut transaksi_id 1,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_id 13) punya produk_sk 13 untuk harga Rp17.500 dan produk_sk 14 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_penjualan berisi satu baris per item transaksi: jumlah, harga_satuan, subtotal, dan produk_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.TopologicalSorter

    Kelas pustaka standar graphlib yang menyusun urutan topologis dari peta "simpul → himpunan hulunya". prepare() memeriksa siklus, get_ready() memberi simpul yang siap dikerjakan, dan done() menandai simpul selesai.

    Dipelajari di Modul 09 · Transformasi sebagai kode

  • union_by_name

    Opsi read_csv dan read_parquet DuckDB yang menyatukan banyak berkas menurut nama kolom, bukan posisinya. Kolom yang tidak ada di sebagian berkas diisi NULL.

    Contoh: kolom diskon yang baru muncul 15 September bernilai NULL untuk 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 CONFLICT atau MERGE. 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 waktu terakhir. Di streaming: kelonggaran waktu yang ditunggu sebelum sebuah jendela ditutup dan dianggap lengkap.

    Dipelajari di Modul 08 · Muat inkremental dan CDC

  • with_columns

    Menambah 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 kolom tanggal.

    Dipelajari di Modul 11 · DataFrame berskala: Polars dan DuckDB

  • zlib.crc32juga: crc32

    Fungsi 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