PHI-Minimart punya 5 cabang di lima pulau. Setiap hari kasir mencatat ratusan transaksi — sistemnya cepat dan andal. Tapi setiap akhir bulan, satu masalah yang sama selalu muncul: menyusun laporan untuk manajemen itu lambat dan melelahkan. Data ada di mana-mana, formatnya beda-beda, dan angka antar-laporan sering tidak cocok.
Faktanya di industri: ±85% waktu proyek pelaporan habis hanya untuk menyiapkan data — bukan menganalisisnya.
Pertanyaan manajemen yang sulit dijawab cepat:
💬 “Produk apa yang paling laku bulan ini — di semua cabang?”
💬 “Cabang mana yang tumbuh, cabang mana yang turun?”
💬 “Bandingkan penjualan tahun ini vs tahun lalu per kategori.”
Hari ini kita membangun jawabannya: sebuah data warehouse — dan di sesi siang, kamu bangun sendiri.
Fondasi · Mulai dari Nol
Bahasa Paling Dasar: Data, Tabel & Database
Data
Fakta mentah yang dicatat: “tanggal 3 Juli, Beras 5kg, 2 unit, Rp 136.000”.
Tabel
Data yang tersusun rapi dalam baris (satu kejadian/record) dan kolom (jenis informasi/field) — persis seperti lembar Excel.
Database
Kumpulan tabel yang saling terkait, dikelola aplikasi khusus (DBMS) seperti MySQL — bisa menampung jutaan baris dan diakses banyak orang sekaligus dengan bahasa SQL.
Contoh: tabel penjualan PHI-Minimart
tanggal
produk
cabang
unit
total
2026-01-03
Beras 5kg
Surabaya
2
136.000
2026-01-03
Kopi Sachet
Medan
10
120.000
2026-01-04
Mie Instan
Denpasar
1
95.000
2026-01-04
Sabun Mandi
Makassar
24
108.000
↑ satu baris = satu transaksi · satu kolom = satu jenis informasi
Kabar baiknya: kalau kamu paham tabel seperti ini, bekalmu sudah cukup untuk hari ini.
Fondasi · Mulai dari Nol
Dari Data Menjadi Keputusan
DATA
Fakta mentah 600 baris transaksi
›
INFORMASI
Data yang diringkas penjualan per kategori
›
WAWASAN
Pola yang bermakna “Makanan menyumbang 50%”
›
KEPUTUSAN
Tindakan bisnis prioritaskan stok makanan
Business Intelligence (BI) adalah seluruh teknologi & praktik untuk menempuh perjalanan ini dengan cepat dan akurat. Data warehouse adalah fondasinya; ETL (Kettle) adalah kendaraannya. Dua istilah inilah yang kita bedah berikutnya.
Konsep Dasar
OLTP vs OLAP
OLTP — Transaksi
Fokus
Mencatat transaksi harian (real-time)
Beban
Insert, update, delete cepat
Contoh
ERP, CRM, HRM
Sifat
Mission critical
OLAP — Analisa
Fokus
Laporan analitik fleksibel & cepat
Beban
Pembacaan data (query) besar
Proses
Batch berkala (mis. tiap malam)
Sumber
Diperkaya dari banyak OLTP → DW
OLTP untuk mencatat (operasional) — OLAP untuk menganalisis. Data warehouse adalah rumah bagi OLAP.
Konsep Dasar
Data Warehouse, Data Mart & ETL
Sumber OLTP
Penjualan, SDM, inventori…
›
ETL (Kettle)
Extract → Transform → Load
›
Data Warehouse
Data terkonsolidasi & bersih
›
Data Mart
Subset untuk satu divisi
ETL = Extract, Transform, Load.Extract — ambil data dari berbagai sumber. Transform — bersihkan & ubah struktur. Load — simpan ke data warehouse. Kettle adalah salah satu tool ETL open-source terbaik; 85% waktu proyek BI habis di penyiapan data.
Tools
Pentaho BI Suite & Kettle
Pentaho adalah suite BI open-source (Java): Pentaho Reporting, Mondrian (OLAP engine), dan Pentaho Data Integration (PDI) / Kettle — tool ETL-nya. Kettle terdiri dari 4 utilitas:
Spoon
Designer GUI untuk merancang & menjalankan job/transformation — yang kita pakai hari ini.
Pan
Menjalankan transformation dari command line (untuk otomatisasi terjadwal).
Kitchen
Menjalankan job dari command line (untuk otomatisasi terjadwal).
Carte
Web server cluster untuk eksekusi terdistribusi (master–slave).
Panel Design — “rak” berisi 100+ step siap tarik (drag) ke kanvas; tab View menyimpan koneksi database.
Kanvas — tempat merangkai step dengan panah (hop). Klik dua kali step = buka pengaturannya.
Toolbar — tombol ▶ Run (F9) dan 🔍 Preview untuk mengintip data di tengah alur.
Logging — hasil eksekusi; hijau = sukses, merah = ada error (baca barisnya!).
Tidak perlu koding. Semua dikerjakan visual: tarik step, sambungkan panah, isi pengaturan, jalankan.
Kettle
Job vs Transformation
Transformation
Alur pengolahan data tingkat baris (row).
Step: kotak pemrosesan (mis. baca CSV)
Hop: panah aliran data antar step
Row: satu baris data yang mengalir
Contoh: baca CSV → beri surrogate key → tulis ke tabel.
Job
Alur kontrol / workflow yang mengatur urutan.
Menjalankan beberapa transformation berurutan
Menangani kondisi sukses/gagal & notifikasi
Cocok untuk otomatisasi (dijalankan Kitchen)
Contoh: jalankan semua dimensi → lalu fact.
Ingat: Transformation mengolah DATA (row-level); Job mengatur ALUR KERJA (control-flow). Keduanya dirancang visual di Spoon.
Preview Fitur
Step yang Akan Kita Pakai Hari Ini
📥 Input
CSV file input — baca file .csv
Excel input — baca .xlsx
Get data from XML — baca .xml
🔧 Transform
Add sequence — buat surrogate key
Select values — pilih/susun kolom
Sort + Unique rows — buang duplikat
Calculator — hitung kolom baru
🔎 Lookup
Database lookup — cari surrogate key di tabel dimensi (dipakai 4× saat membangun fact)
Dimension lookup/update — kelola SCD otomatis
📤 Output
Table output — tulis hasil ke tabel MySQL; tombol SQL-nya bisa membuatkan tabel secara otomatis
Pola yang akan terasa berulang: Input (baca) → Transform (olah) → Output (simpan) — persis ETL. Kettle punya 100+ step; kuasai selusin ini saja — cukup untuk membangun data warehouse pertamamu.
Modelling
Multidimensional Modelling
Merancang DW dengan dua jenis tabel: fact (nilai pengukuran) dan dimension (konteks). Dipopulerkan oleh Ralph Kimball.
Cube
Struktur array multidimensi (dimension + measure), biasanya satu domain bisnis, mis. penjualan.
Klik tombol SQL → Execute (tabel dibuat otomatis) → Close
Jalankan: F9 → Launch → semua step hijau ✓
-- Checkpoint di phpMyAdmin:
SELECT COUNT(*) FROM dim_produk; -- hasil: 15
Alur transformation
CSV file input
→
Add sequence
→
Table output
Pola tiga step ini adalah wujud nyata Extract → Transform → Load. Simpan file — akan jadi templat dimensi berikutnya.
Hands-On · Langkah 3 dari 5
Tiga Dimensi Lainnya
dim_cabang
File → Save as… → t_dim_cabang.ktr
CSV input → cabang.csv → Get Fields ulang
Sequence: sk_cabang
Table output: dim_cabang → SQL → F9
Checkpoint: 5 baris
dim_karyawan
Save as → t_dim_karyawan.ktr
CSV input → karyawan.csv
Sequence: sk_karyawan
Table output: dim_karyawan → SQL → F9
Checkpoint: 12 baris
dim_waktu — beda pola!
CSV input → penjualan.csv
Select values: ambil kolom tanggal saja
Sort rows → Unique rows (tanggal unik)
Calculator: hari, bulan, tahun, kuartal
Sequence sk_waktu → Table output dim_waktu
Prinsip: pola Extract → SK → Load sama untuk semua dimensi — hanya sumber & nama berbeda. dim_waktu diturunkan dari tanggal transaksi karena tidak ada file master waktu.
Hands-On · Langkah 4 dari 5
fact_penjualan: Empat Database Lookup
Langkah di Spoon
Transformation baru → t_fact_penjualan.ktr; CSV input → penjualan.csv
Kategori Lookup → tarik Database lookup4 kali, sambung berantai; isi per tabel di kanan
Jika hasil SK bernilai null: tabel dimensi belum terisi (jalankan dimensi dulu) atau kunci lookup salah kolom.
Hands-On · Langkah 5 dari 5
Job Penggabung: Otomatiskan Semuanya
Langkah di Spoon
File → New → Job, simpan j_phi_dw.kjb
Kategori General: tarik START, lalu 5× entry Transformation, dan Success
Klik dua kali tiap entry → browse ke file .ktr-nya (produk, cabang, karyawan, waktu, fact)
Hubungkan hop hijau berurutan — semua dimensi dulu, fact terakhir
F9 → perhatikan panel Logging: semua entry bertanda hijau ✓
Alur Job
START →
produk →
cabang →
karyawan →
waktu →
fact →
Success
Kenapa urutan penting? fact_penjualan mencari surrogate key dari tabel dimensi — kalau dimensi belum terisi, lookup menghasilkan null. Inilah alasan Job dieksekusi dimensi-dulu.
Hands-On · Verifikasi
Verifikasi Hasil & Analisa (OLAP)
-- Jalankan di phpMyAdmin:
SELECT COUNT(*) FROM fact_penjualan; -- 600
SELECT SUM(total_jual) FROM fact_penjualan; -- 357809500-- Drill-down per kategori (join ke dimensi):SELECT p.nama_kategori, SUM(f.total_jual) AS tot
FROM fact_penjualan f
JOIN dim_produk p ON f.sk_produk = p.sk_produk
GROUP BY p.nama_kategori ORDER BY tot DESC;
Angka acuan — harus cocok
600
baris fact_penjualan
Rp 357,8 jt
total penjualan
Makanan
kategori teratas
Surabaya
cabang teratas
Query join fact–dimensi seperti ini persis yang dilakukan engine OLAP (Mondrian menerjemahkan MDX → SQL). Drill-down = menambah dimensi pada GROUP BY.
Bekal Ujian
Glosarium Istilah Kunci
ETL
Extract, Transform, Load — proses olah data
Kettle / PDI
Tool ETL Pentaho (dirancang di Spoon)
Transformation
Alur olah data (row-level)
Job
Alur kontrol/workflow
Star Schema
Fact di pusat, dikelilingi dimensi
Surrogate Key
Kunci buatan (sk_*) di data warehouse
Fact Table
Tabel measure + FK ke dimensi
Mondrian
OLAP engine (ROLAP) Pentaho, query MDX
SCD
Slowly Changing Dimension (Type 1/2/3)
Latihan
Contoh Soal Try-Out — klik jawabanmu
1. Utilitas Kettle yang dipakai untuk merancang transformation secara visual adalah…
A. Pan
B. Kitchen
C. Spoon
D. Carte
Jawaban C — Spoon adalah designer GUI Kettle; Pan & Kitchen untuk eksekusi terjadwal.
2. Dalam star schema, tabel yang berisi nilai measure adalah…
A. Tabel dimensi
B. Tabel fakta
C. Tabel staging
D. Tabel repositori
Jawaban B — Fact table menyimpan measure + foreign key ke dimensi.
Dibuka di halaman terpisah · timer 45 menit · kunci jawaban & pembahasan muncul otomatis di akhir.
Perangkat lunak (unduh dari situs resmi): Java Temurin — adoptium.net · XAMPP — apachefriends.org · Pentaho Data Integration — pentaho.com/pentaho-developer-edition · MySQL Connector/J — dev.mysql.com/downloads/connector/j