Lompat ke konten
nalar

Data Warehousing, Skema Dimensi & Kubus OLAP

Tabel fakta dan dimensi, star schema, snowflake schema, fact constellation, proses ETL, serta operasi OLAP roll-up, drill-down, slice, dice, dan pivot.

Capaian Pembelajaran

Setelah minggu ini kamu bisa:

  1. Menjelaskan karakteristik data warehouse (subject-oriented, integrated, time-variant, non-volatile).
  2. Merancang star schema dan snowflake schema dari data transaksi.
  3. Menjelaskan proses ETL (Extract, Transform, Load).
  4. Melakukan operasi OLAP: roll-up, drill-down, slice, dice, pivot dengan Pandas dan SQL.
  5. Membedakan ukuran (measure) distributif, aljabar, dan holistik.

1. Apa itu Data Warehouse?

Definisi klasik W. H. Inmon:

Data warehouse adalah kumpulan data yang berorientasi subjek, terintegrasi, bervariasi waktu, dan tidak mudah berubah (non-volatile) untuk mendukung pengambilan keputusan manajemen.

Karakteristik Arti Contoh
Subject-oriented Disusun per subjek bisnis, bukan per aplikasi Subjek: penjualan, pelanggan, produk
Integrated Data dari banyak sumber diseragamkan Kode gender "L/P" dan "M/F" disatukan
Time-variant Menyimpan histori (5–10 tahun) Penjualan per bulan sejak 2018
Non-volatile Hanya load & read, jarang di-update Data kemarin tidak diubah lagi

Arsitektur tiga lapis

 Sumber (OLTP, CSV, API) ──ETL──► [Data Warehouse] ──► [OLAP Server] ──► Dashboard / BI / Data Mining
       bawah                        tengah (penyimpanan)     tengah            atas (front-end)

Data mart = bagian kecil warehouse untuk satu departemen (mis. data mart pemasaran).


2. ETL — Extract, Transform, Load

Tahap Aktivitas
Extract Ambil data dari sistem sumber (DB kasir, aplikasi, file log)
Transform Bersihkan (Minggu 2), seragamkan kode, hitung atribut turunan, buat surrogate key, agregasi
Load Masukkan ke tabel dimensi dulu, lalu tabel fakta; refresh berkala (harian/jam-an)

Varian modern: ELT — data mentah dimuat dulu ke data lake/warehouse cloud, transformasi dilakukan di dalamnya (SQL).


3. Model Data Multidimensi

  • Tabel fakta (fact table): menyimpan measure (angka yang dianalisis) + foreign key ke dimensi. Contoh measure: jumlah, total.
  • Tabel dimensi (dimension table): menyimpan konteks deskriptif — siapa, apa, di mana, kapan. Contoh: produk, toko, waktu.
  • Grain (butiran): tingkat detail satu baris fakta. Contoh: "satu baris = satu item produk dalam satu transaksi".

3.1 Star Schema

               dim_waktu
           (id_waktu, tanggal, bulan, kuartal, tahun)
                    │
dim_produk ──── fakta_penjualan ──── dim_toko
(id_produk,      (id_transaksi,       (id_toko, nama_toko,
 nama_produk,     id_waktu, id_produk,  kota, wilayah)
 kategori,        id_toko, jumlah,
 harga)           total)

Satu tabel fakta di tengah, setiap dimensi satu tabel denormalisasi. Kueri cepat (sedikit JOIN), mudah dipahami.

3.2 Snowflake Schema

Dimensi dinormalisasi menjadi beberapa tabel:

dim_produk(id_produk, nama_produk, id_kategori) ──► dim_kategori(id_kategori, nama_kategori)
dim_toko(id_toko, nama_toko, id_kota) ──► dim_kota(id_kota, kota, id_wilayah) ──► dim_wilayah(...)

Hemat ruang & mudah dirawat, tetapi kueri butuh lebih banyak JOIN.

3.3 Fact Constellation (Galaxy Schema)

Beberapa tabel fakta berbagi dimensi yang sama. Contoh: fakta_penjualan dan fakta_pengiriman sama-sama memakai dim_waktu dan dim_produk.

Aspek Star Snowflake Constellation
Normalisasi dimensi Tidak Ya Campuran
Jumlah JOIN Sedikit Banyak Tergantung
Kecepatan kueri Cepat Lebih lambat —
Kompleksitas Rendah Sedang Tinggi

4. Hierarki Konsep

Dimensi memiliki hierarki yang memungkinkan agregasi bertingkat:

  • Waktu: tanggal → bulan → kuartal → tahun
  • Lokasi: toko → kota → wilayah → negara
  • Produk: produk → kategori

5. Kubus Data (Data Cube) & Operasi OLAP

Bayangkan data penjualan sebagai kubus 3D: sumbu waktu × produk × lokasi, isi sel = total penjualan.

Dengan n dimensi (tanpa hierarki) terdapat 2ⁿ cuboid (kombinasi group-by), dari apex cuboid (total keseluruhan, 0-D) sampai base cuboid (n-D).

Operasi Arti SQL / Pandas
Roll-up Naik hierarki / kurangi dimensi → lebih ringkas bulan → kuartal: GROUP BY kuartal
Drill-down Turun hierarki → lebih detail kuartal → bulan: GROUP BY kuartal, bulan
Slice Pilih satu nilai pada satu dimensi → sub-kubus WHERE tahun = 2025 / df[df.kategori == "Fashion"]
Dice Pilih beberapa nilai pada beberapa dimensi WHERE kategori IN (...) AND kota IN (...)
Pivot (rotate) Putar sumbu tampilan pivot_table(index=..., columns=...)

Contoh angka: penjualan Elektronik Q1 = 120 jt, Q2 = 150 jt, Q3 = 90 jt, Q4 = 140 jt. Roll-up ke tahun → 500 jt. Drill-down Q2 ke bulan (April 40, Mei 60, Juni 50) → total tetap 150 jt.


6. Jenis Measure

Jenis Definisi Contoh Bisa digabung dari sub-agregat?
Distributif Hasil agregat = agregat dari agregat bagian SUM, COUNT, MIN, MAX Ya
Aljabar Dihitung dari beberapa measure distributif AVG = SUM/COUNT, std Ya (simpan SUM & COUNT)
Holistik Tidak bisa dari sub-agregat MEDIAN, MODE, rank Tidak

Contoh jebakan: rata-rata per toko 100 (10 transaksi) dan 200 (30 transaksi). Rata-rata gabungan bukan (100+200)/2 = 150, melainkan (100·10 + 200·30)/40 = 175.


7. OLAP Server: ROLAP, MOLAP, HOLAP

Jenis Penyimpanan Kelebihan Kekurangan
ROLAP Tabel relasional (star schema di RDBMS) Skala besar, fleksibel Lebih lambat
MOLAP Array multidimensi pra-agregasi Sangat cepat Boros ruang, kurang skalabel
HOLAP Gabungan Seimbang Kompleks

Warehouse cloud modern (BigQuery, Snowflake, Redshift) pada dasarnya ROLAP kolumnar yang sangat cepat.


Ringkasan

  • Data warehouse: subject-oriented, integrated, time-variant, non-volatile.
  • Fakta = angka + foreign key; dimensi = konteks deskriptif.
  • Star schema paling umum: cepat & sederhana; snowflake menormalisasi dimensi.
  • Roll-up meringkas, drill-down merinci, slice = 1 dimensi 1 nilai, dice = banyak dimensi, pivot = rotasi.
  • AVG harus dihitung ulang dari SUM dan COUNT, bukan rata-rata dari rata-rata.

Bacaan

  • Han, Kamber & Pei — Bab 4 (Data Warehousing and Online Analytical Processing).
  • Kimball & Ross — The Data Warehouse Toolkit (dimensional modeling).

Tugas Minggu Ini

  1. Kerjakan lab.ipynb sampai selesai (termasuk diagram skema).
  2. Kerjakan kuis (di web, atau baca quiz.json).
  3. Isi exercise.py, lalu cek: python check.py 3

Sudah paham materinya?

Tandai selesai, lalu uji pemahamanmu.

Kerjakan kuis