TL;DR
Data warehouse adalah sistem penyimpanan terpusat yang ngumpulin data dari banyak sumber operasional, dirapikan dulu lewat proses ETL, lalu disusun khusus untuk analisis dan pelaporan. Bedanya sama database biasa: data warehouse nyimpen riwayat panjang dan dioptimalkan buat query agregat, bukan buat transaksi harian. Bisnis mulai butuh data warehouse saat laporan gabungan antar sistem makan waktu berjam-jam tiap bulan.
Data warehouse adalah sistem penyimpanan terpusat yang ngumpulin data dari banyak sumber, dirapikan dulu, lalu disusun khusus buat analisis dan pelaporan.
Kalau tiap akhir bulan tim kamu masih copy-paste data dari sistem kasir, sistem gudang, dan file Excel marketing biar jadi satu laporan, ini masalah yang mau dipecahin data warehouse.
Bill Inmon, yang dianggap bapak konsep ini, ngedefinisiin data warehouse sebagai kumpulan data yang berorientasi subjek, terintegrasi, punya dimensi waktu, dan gak berubah, buat mendukung pengambilan keputusan manajemen. Empat sifat itu yang bikin dia beda dari database biasa.
Di bawah ini konsepnya, komponennya, dan tanda konkret kapan bisnis beneran butuh.
Data warehouse adalah database yang isinya salinan data dari sistem-sistem operasional perusahaan, udah dibersihin dan diseragamkan formatnya, disimpan lengkap dengan riwayat historisnya. Tujuannya satu: jawab pertanyaan bisnis yang butuh gabungan banyak sumber, tanpa ganggu sistem yang lagi melayani transaksi.
Empat sifat yang disebut Inmon tadi maksudnya begini:
Sifat terakhir itu yang sering bikin orang kaget. Di sistem kasir, kalau harga produk naik, nilainya ditimpa. Di data warehouse, harga lama disimpan lengkap dengan tanggal berlakunya.
Ada lima bagian yang selalu ada di setiap data warehouse, seberapa pun ukurannya. Nama tool-nya beda-beda, tapi perannya sama.
| Komponen | Fungsinya | Contoh nyata |
|---|---|---|
| Sumber data | Sistem tempat data lahir | Aplikasi kasir, ERP, Google Ads, file Excel |
| Proses ETL | Narik, rapikan, masukin | Skrip Python, Airbyte, dbt |
| Area staging | Tempat parkir data mentah sebelum diproses | Skema khusus di database yang sama |
| Gudang inti | Tabel fakta dan dimensi yang rapi | PostgreSQL, BigQuery, Snowflake |
| Lapisan penyajian | Tempat orang baca angkanya | Looker Studio, Metabase, Power BI |
Bagian yang paling sering diremehkan adalah ETL. Ini proses narik data dari sumber, ngubah formatnya biar seragam, lalu masukin ke gudang. Porsi kerjaannya paling besar dan paling gampang rusak kalau sumber datanya ganti struktur.
Bentuk paling umum namanya skema bintang. Ada satu tabel fakta di tengah yang isinya angka transaksi, dikelilingi beberapa tabel dimensi yang isinya keterangan. Ralph Kimball yang mempopulerkan model ini, dan sampai sekarang masih jadi standar karena query-nya gampang ditulis orang non-teknis.
Contoh buat retail:
CREATE TABLE dim_cabang (
cabang_key SERIAL PRIMARY KEY,
cabang_id VARCHAR(20),
nama_cabang VARCHAR(100),
kota VARCHAR(60),
provinsi VARCHAR(60)
);
CREATE TABLE fakta_penjualan (
penjualan_key BIGSERIAL PRIMARY KEY,
tanggal_key INT REFERENCES dim_tanggal(tanggal_key),
cabang_key INT REFERENCES dim_cabang(cabang_key),
produk_key INT REFERENCES dim_produk(produk_key),
qty INT,
nilai_rupiah NUMERIC(14,2)
);
Tabel fakta isinya angka yang bisa dijumlah: qty dan nilai rupiah. Tabel dimensi isinya keterangan yang dipakai buat motong angka itu: kota, kategori produk, bulan.
Begitu strukturnya begini, pertanyaan bisnis jadi query yang pendek:
SELECT
d.nama_bulan,
c.kota,
SUM(f.nilai_rupiah) AS omzet
FROM fakta_penjualan f
JOIN dim_tanggal d ON d.tanggal_key = f.tanggal_key
JOIN dim_cabang c ON c.cabang_key = f.cabang_key
WHERE d.tahun = 2025
GROUP BY d.nama_bulan, c.kota
ORDER BY omzet DESC;
Perhatiin SUM di situ. Hampir semua query di data warehouse bentuknya aggregate function yang ngeringkas jutaan baris jadi belasan angka.
Kolom berlaku_dari dan berlaku_sampai di tabel dimensi produk itu cara nyimpen riwayat perubahan. Kalau nama produk ganti, baris lama ditutup tanggalnya dan baris baru dibuka. Teknik ini namanya slowly changing dimension.
Gak semua bisnis butuh. Kalau semua data kamu masih muat di satu database dan laporan bulanan selesai 15 menit, bikin data warehouse malah nambah kerjaan. Lima tanda di bawah ini yang biasanya muncul duluan saat kebutuhannya udah nyata.
Kalau kamu kena tiga dari lima, mulai rencanain. Kalau kena satu, benerin dulu proses yang ada.
Toko Berkah punya 4 cabang di Yogyakarta plus toko di dua marketplace. Data penjualannya ada di tiga tempat berbeda dengan format tanggal yang beda pula.
Tiap awal bulan, satu staf admin habis rata-rata 9 jam buat gabungin semuanya jadi satu laporan omzet. Dan tiap bulan juga, angkanya selalu beda tipis sama catatan kasir.
Setelah pindah ke data warehouse sederhana di PostgreSQL, waktu penyusunan laporan turun jadi 12 menit karena tinggal jalanin satu query. Yang lebih penting, selisih angka antar tim hilang, soalnya semua orang ambil dari satu tabel yang sama.
Temuan yang muncul setelah data 18 bulan digabung: cabang dengan omzet tertinggi ternyata punya margin paling tipis, gara-gara porsi produk diskonnya 31 persen dari total transaksi. Angka itu gak pernah kelihatan waktu laporannya masih terpisah per sistem.
Definisi metric yang seragam adalah alasan utama temuan kayak gini bisa muncul.
Tiga istilah ini sering ketuker. Perbedaannya ada di jenis data yang ditampung dan seberapa lebar cakupannya.
| Aspek | Data warehouse | Data lake | Data mart |
|---|---|---|---|
| Bentuk data | Terstruktur, skema jelas | Mentah, apa adanya | Terstruktur |
| Cakupan | Seluruh perusahaan | Semua yang masuk | Satu divisi |
| Rapikan data | Sebelum disimpan | Saat mau dipakai | Sebelum disimpan |
| Pemakai utama | Analis, manajemen | Data scientist, engineer | Tim spesifik |
| Biaya simpan | Sedang | Murah | Kecil |
Data mart itu potongan kecil dari data warehouse buat satu divisi. Banyak tim justru mulai dari sini, bangun satu data mart penjualan dulu, baru melebar.
Buat gambaran arsitektur yang lebih detail, panduan data warehousing di learn.microsoft.com ngejelasin pilihan pola dan trade-off masing-masing.
Godaan pertama selalu ini: pindahin semua tabel apa adanya. Hasilnya gudang yang isinya 200 tabel dan gak ada yang paham hubungannya. Mulai dari satu pertanyaan bisnis, tarik cuma tabel yang perlu buat jawab itu.
Apa arti satu penjualan yang sah? Termasuk yang direfund gak? Kalau pertanyaan ini gak dijawab di awal, kamu bakal ngulang seluruh perhitungan tiga bulan lagi.
Kalau kamu timpa nama produk lama dengan yang baru, laporan tahun lalu berubah sendiri. Ini bikin orang berhenti percaya sama dashboard.
Satu angka salah yang kelihatan direksi lebih mahal harganya dari telat dua minggu. Cek dulu kualitas datanya sebelum sambungin ke dashboard.
Ukuran yang bener adalah berapa KPI yang sekarang bisa dijawab dalam 1 menit, yang sebelumnya butuh sehari.
Beda tujuan. Database operasional dirancang buat nyimpen transaksi yang lagi jalan dengan cepat dan aman. Data warehouse dirancang buat baca data dalam jumlah besar sekaligus, lengkap dengan riwayat bertahun-tahun. Database biasanya nyimpen kondisi terkini, data warehouse nyimpen semua perubahan yang pernah terjadi.
Belum tentu. Kalau semua data kamu masih muat di satu database dan laporan bulanan selesai dalam hitungan menit, spreadsheet plus satu database udah cukup. Sinyal kamu mulai butuh data warehouse adalah saat harus gabungin data dari 3 sistem berbeda tiap kali bikin laporan, dan angkanya sering beda antar tim.
Data lake nyimpen data mentah apa adanya, termasuk file gambar, log, dan JSON yang belum punya struktur. Data warehouse cuma nerima data yang udah dirapikan dan punya skema jelas. Data lake lebih murah buat nampung apa aja, data warehouse lebih cepat dan lebih bisa dipercaya buat pelaporan.
Buat satu area bisnis dengan 3 sampai 5 sumber data, tim kecil biasanya butuh 6 sampai 12 minggu sampai laporan pertama jalan. Yang paling makan waktu bukan bikin tabelnya, tapi nyamain definisi. Nentuin apa arti satu penjualan yang sah aja sering habis dua minggu rapat.
Buat mulai, PostgreSQL di satu server udah cukup dan gratis. Kalau data kamu udah puluhan juta baris, layanan cloud kayak BigQuery, Snowflake, atau Amazon Redshift lebih masuk akal karena hitungannya berdasarkan pemakaian. Skema dan disiplin definisi jauh lebih menentukan hasil daripada pilihan tool-nya.
Dua hal yang paling penting dari sini. Data warehouse gunanya nyatuin angka dari banyak sistem biar semua orang baca dari sumber yang sama. Dan bentuk skemanya, tabel fakta dikelilingi tabel dimensi, yang bikin query analisis jadi pendek.
Kalau kamu baru mau mulai, ambil satu laporan yang paling sering diminta bos. Bikin satu tabel fakta dan dua tabel dimensi buat jawab itu doang. Itu data warehouse pertamamu.
Buat memahami kenapa struktur ini beda jauh dari database yang kamu pakai sehari-hari, lanjut ke perbedaan data warehouse dan database operasional.
Mau latihan nulis query agregat di skema bintang? Coba modul JOIN dan GROUP BY di NgulikSQL, semua latihannya pakai dataset retail Indonesia.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Kolom waktu isinya angka gede kayak 1704067200 dan bikin bingung? Itu Unix timestamp. Ini cara ngubahnya jadi tanggal beneran di SQL, plus balik lagi.
Data transaksi tersimpan UTC, tapi laporan harus jam WIB. Kalau salah konversi, angka penjualan tengah malam bisa kecatat di tanggal yang salah. Ini cara handle timezone di SQL dengan benar.
Nambah 30 hari ke tanggal invoice, ngurangin sebulan buat cari periode lalu, ngitung selisih hari antar order. Semua itu aritmetika tanggal, dan SQL punya operator INTERVAL buat ngerjainnya.