Faktor Geografis & Demografi: Gerai Kuta Legian berlokasi di sentra pariwisata internasional dengan arus pejalan kaki (footfall) turis domestik dan mancanegara tertinggi di Bali.
Volume transaksi mencapai 18.493 unit barang (45,02% total omset jaringan), melampaui Denpasar Renon (13.546 unit) dan Ubud (8.656 unit).
Ekstraksi & Mencegah Collision PK: ETL membaca tabel penjualan dan detail_penjualan dari db_cabang1, db_cabang2, dan db_cabang3.
Natural key kode_cabang ('CAB02') dipetakan ke surrogate key sk_cabang pada fact_penjualan sehingga ID kasir tidak saling bertubrukan.
| Kode | Nama Cabang | Total Kuantitas | Total Penjualan (Rp) | Porsi Omset (%) |
|---|---|---|---|---|
| CAB02 | MartKita Kuta Legian | 18.493 unit | Rp 194.654.600,00 | 45,02% |
| CAB01 | MartKita Denpasar Renon | 13.546 unit | Rp 145.684.300,00 | 33,69% |
| CAB03 | MartKita Ubud | 8.656 unit | Rp 92.030.950,00 | 21,29% |
Komoditas Sembako Bernilai Nominal Tinggi: Kategori Makanan memuat sembako pokok bernilai perolehan besar seperti Beras Premium 5kg (Rp 69.400) dan Minyak Goreng Bimoli 1L (Rp 20.100).
Kombinasi harga per unit sembako dan perputaran mi instan yang mencapai ribuan unit menjadikan kategori ini mendominasi 47,22% dari seluruh omset ritel.
Denormalisasi Hierarki Kategori: Di database cabang, relasi kategori terpecah ke 3 tabel normal: barang → jenis_barang → kategori_barang.
ETL men-denormalisasi hierarki tersebut dengan menyematkan kode_kategori di dim_barang dan membuat dim_kategori sehingga query analitik sangat cepat tanpa multi-join.
| Kode | Kategori Produk | Total Kuantitas | Total Penjualan (Rp) | Kontribusi Omset (%) |
|---|---|---|---|---|
| KAT01 | Makanan | 15.852 unit | Rp 204.171.900,00 | 47,22% |
| KAT02 | Minuman | 13.056 unit | Rp 88.578.400,00 | 20,49% |
| KAT04 | Kebutuhan Rumah Tangga | 3.353 unit | Rp 51.671.800,00 | 11,95% |
| KAT05 | Snack & Permen | 5.211 unit | Rp 46.099.350,00 | 10,66% |
| KAT03 | Perawatan Pribadi | 3.223 unit | Rp 41.848.400,00 | 9,68% |
FMCG Konsumsi Spontan (Grab-and-Go): Air Mineral 600ml (2.147 unit), Indomie Goreng (1.944 unit), dan Le Minerale (1.705 unit) adalah produk hidrasi dan konsumsi cepat saji yang esensial di iklim tropis Bali.
Harga per unit yang murah (Rp 3.000 - Rp 3.500) membuat keputusan beli konsumen instan tanpa pertimbangan harga lama.
Integrasi Master Barang: Data transaksi kasir cabang diikat ke tabel dim_barang melalui surrogate key sk_barang.
ETL menyelaraskan kode barang unik ('BRG017', 'BRG001') sehingga kuantitas dari ketiga toko teragregasi secara presisi.
| No | Kode | Nama Produk | Kategori | Unit Terjual | Nilai Penjualan (Rp) |
|---|---|---|---|---|---|
| 1 | BRG017 | Air Mineral 600ml | Minuman | 2.147 unit | Rp 7.544.500,00 |
| 2 | BRG001 | Indomie Goreng 85g | Makanan | 1.944 unit | Rp 5.855.350,00 |
| 3 | BRG003 | Indomie Kuah Ayam Bawang 69g | Makanan | 1.753 unit | Rp 5.109.850,00 |
| 4 | BRG019 | Le Minerale 600ml | Minuman | 1.705 unit | Rp 5.987.800,00 |
| 5 | BRG002 | Mie Sedaap Soto 75g | Makanan | 1.556 unit | Rp 4.534.350,00 |
| 6 | BRG021 | Teh Botol Sosro 450ml | Minuman | 1.410 unit | Rp 7.804.400,00 |
| 7 | BRG008 | Minyak Goreng Bimoli 1L | Makanan | 1.326 unit | Rp 26.698.400,00 |
| 8 | BRG044 | Beng-Beng Wafer 32g | Snack & Permen | 1.299 unit | Rp 3.649.450,00 |
| 9 | BRG018 | Air Mineral 1500ml | Minuman | 1.295 unit | Rp 8.493.150,00 |
| 10 | BRG020 | Coca Cola 390ml | Minuman | 1.274 unit | Rp 7.692.300,00 |
Puncak Liburan Tahun Baru (High Season Momentum): Januari merupakan puncak arus libur Tahun Baru di Bali. Belanja konsumsi makanan, minuman, dan perlengkapan turis melonjak tajam hingga mencapai Rp 150,06 Juta.
Dimensi Kalender Cerdas: ETL mengekstrak kolom timestamp kasir tgl_penjualan menjadi integer surrogate key sk_waktu = YYYYMMDD.
Atribut bulan, tahun, nama_bulan di dim_waktu memungkinkan agregasi waktu tanpa fungsi konversi string berulang di query.
| Tahun | Bulan Kalender | Total Kuantitas | Total Penjualan (Rp) | Porsi Omset (%) |
|---|---|---|---|---|
| 2026 | January (Bulan 1) | 14.316 unit | Rp 150.060.450,00 | 34,71% |
| 2026 | March (Bulan 3) | 13.553 unit | Rp 146.946.800,00 | 33,99% |
| 2026 | February (Bulan 2) | 12.826 unit | Rp 135.362.600,00 | 31,31% |
Pengiriman Kartonan Volume Cepat: Minuman dalam kemasan memiliki tingkat perputaran (inventory turnover) paling tinggi di minimarket. Pasokan dikirim per dus isi 24-48 botol, sehingga akumulasi unit dari PT Mitra Minuman Dewata menjadi yang terbesar.
Catatan Finansial: Supplier dengan nilai rupiah faktur terbesar adalah CV Berkah Sembako Bali (Rp 159,80 Juta) karena memasok komoditas beras dan minyak goreng.
Standardisasi Faktur Pembelian: ETL mengekstrak data dari barang_masuk dan detail_barang_masuk dari 3 cabang.
ETL menstandarisasi kode supplier ke dim_supplier via sk_supplier dan memuat 454 transaksi pengadaan ke fact_barang_masuk.
| Kode | Nama Supplier Rekanan | Total Pasokan Unit | Total Nilai Faktur (Rp) | Porsi Unit (%) |
|---|---|---|---|---|
| SUP02 | PT Mitra Minuman Dewata | 15.672 unit | Rp 71.056.200,00 | 27,86% |
| SUP01 | PT Sumber Pangan Nusantara | 13.728 unit | Rp 76.545.000,00 | 24,41% |
| SUP03 | CV Berkah Sembako Bali | 9.438 unit | Rp 159.804.600,00 | 16,78% |
| SUP06 | PT Camilan Nusantara Jaya | 8.640 unit | Rp 65.301.000,00 | 15,36% |
| SUP05 | PT Rumah Bersih Sejahtera | 4.416 unit | Rp 55.242.000,00 | 7,85% |
| SUP04 | PT Perawatan Indah Lestari | 4.356 unit | Rp 45.073.800,00 | 7,74% |
Kerentanan Kemasan Cup & Batas Kedaluwarsa: Pop Mie berwadah cup styrofoam/kertas yang mudah sobek/penyok saat proses bongkar muat dan penataan rak toko.
Oreo Vanilla dan Roti Tawar rentan remuk serta memiliki masa simpan pendek yang segera diretur saat mendekati expired date.
Integrasi Modul Retur: ETL menyaring data dari tabel operasional retur dan barang_retur dengan kondisi 'RUSAK' atau 'KADALUARSA'.
Data dimuat ke fact_retur (131 transaksi retur) terhubung ke dim_barang via sk_barang.
| Kode | Nama Produk | Total Retur Unit | Total Nilai Kerugian (Rp) |
|---|---|---|---|
| BRG004 | Pop Mie Ayam Cup 75g | 17 unit | Rp 96.700,00 |
| BRG016 | Oreo Vanilla 133g | 17 unit | Rp 144.150,00 |
| BRG014 | Roti Tawar Sari Roti | 13 unit | Rp 110.300,00 |
| BRG005 | Beras Premium 5kg | 12 unit | Rp 773.900,00 |
| BRG008 | Minyak Goreng Bimoli 1L | 12 unit | Rp 222.250,00 |
Korelasi Volume Arus Barang: Gerai Kuta Legian mencatat perputaran unit tertinggi. Semakin padat volume bongkar muat dan aktivitas pajang barang di toko, semakin tinggi probabilitas terjadinya kerusakan kemasan.
Pemetaan Multi-Cabang: ETL mengagregasi data retur dari masing-masing database cabang ke fact_retur dan menghubungkannya ke dim_cabang via sk_cabang.
| Kode | Nama Cabang | Total Retur Unit | Total Nilai Retur (Rp) | Porsi Retur Jaringan (%) |
|---|---|---|---|---|
| CAB02 | MartKita Kuta Legian | 99 unit | Rp 1.056.350,00 | 39,60% |
| CAB03 | MartKita Ubud | 78 unit | Rp 1.046.850,00 | 31,20% |
| CAB01 | MartKita Denpasar Renon | 73 unit | Rp 928.350,00 | 29,20% |
Dimensi Kaleng Kecil & Risiko Shrinkage: Produk kaleng susu dan botol kecap berukuran padat dan mudah terselip di balik tumpukan rak gudang atau menjadi sasaran pencurian pengunjung (shoplifting).
Stok sistem tercatat 564 unit, namun fisik hanya 553 unit (11 unit minus/hilang).
Kalkulasi Deviasi Audit: ETL mengekstrak data dari stok_opname dan detail_stok_opname. Nilai selisih dihitung sebagai stok_fisik - stok_sistem.
Kueri analitik menggunakan SUM(ABS(selisih)) agar deviasi absolut terhitung secara adil.
| Kode | Nama Produk | Stok Sistem | Stok Fisik | Selisih Absolut | Status Audit |
|---|---|---|---|---|---|
| BRG027 | Susu Kental Manis Frisian Flag 370g | 564 unit | 553 unit | 11 unit | Kurang / Hilang |
| BRG009 | Kecap Manis ABC 520ml | 489 unit | 481 unit | 10 unit | Kurang / Hilang |
| BRG018 | Air Mineral 1500ml | 1.729 unit | 1.722 unit | 9 unit | Kurang / Hilang |
| BRG034 | Pewangi So Klin 800ml | 524 unit | 523 unit | 7 unit | Kurang / Hilang |
Kepadatan Pengunjung & Titik Buta (Blind Spot): Lalu lintas pembeli di Kuta Legian yang sangat padat membuat pengawasan pramuniaga terhadap lorong gerai rentan lengah.
Dari total 56 unit selisih, sebanyak 49 unit berstatus hilang (stok fisik < sistem) dan hanya 7 unit selisih lebih.
Tabel Fakta Stok Opname: ETL mengonsolidasi 396 baris rekonsiliasi inventaris fisik ke fact_stok_opname.
Kueri SQL mengelompokkan berdasarkan dim_cabang via sk_cabang dan memisahkan perhitungan stok kurang dan lebih.
| Kode | Nama Cabang | Total Selisih Unit | Stok Kurang / Hilang | Stok Lebih | Porsi Masalah (%) |
|---|---|---|---|---|---|
| CAB02 | MartKita Kuta Legian | 56 unit | 49 unit | 7 unit | 41,79% |
| CAB01 | MartKita Denpasar Renon | 49 unit | 36 unit | 13 unit | 36,57% |
| CAB03 | MartKita Ubud | 29 unit | 20 unit | 9 unit | 21,64% |
Margin Absolut Rupiah Tinggi: Walaupun persentase margin Beras Premium 5kg hanya 10,88% (kalah dibanding Tisu Paseo 21,32% atau Chitato 19,39%), harga jual beras per karung sangat tinggi (Rp 69.400).
Setiap karung menghasilkan laba absolut Rp 7.550. Dikalikan 847 karung terjual, akumulasi rupiah labanya menjadi Rp 6.397.900,00.
Kalkulasi Derived Metric di ETL: Kolom profit tidak ada di database kasir operasional OLTP.
Pipeline Python ETL secara otomatis menghitung metrik turunan ini saat transformasi: gross_profit = (detail_penjualan.harga_jual - barang.harga_beli) * detail_penjualan.qty dan menyimpannya di fact_penjualan.gross_profit.
| No | Kode | Nama Produk | Unit Terjual | Total Penjualan (Rp) | Gross Profit (Rp) | Margin (%) |
|---|---|---|---|---|---|---|
| 1 | BRG005 | Beras Premium 5kg | 847 unit | Rp 58.807.700,00 | Rp 6.397.900,00 | 10,88% |
| 2 | BRG008 | Minyak Goreng Bimoli 1L | 1.326 unit | Rp 26.698.400,00 | Rp 3.549.950,00 | 13,30% |
| 3 | BRG007 | Gula Pasir 1kg | 1.242 unit | Rp 20.660.900,00 | Rp 3.261.450,00 | 15,79% |
| 4 | BRG039 | Chitato Sapi Panggang 68g | 1.124 unit | Rp 11.876.900,00 | Rp 2.303.450,00 | 19,39% |
| 5 | BRG029 | Sampo Sunsilk 170ml | 723 unit | Rp 13.451.550,00 | Rp 2.254.100,00 | 16,76% |