Artikel

Konten contoh

Memahami Pemodelan Dimensi dan Star Schema

Tentukan grain fakta penjualan sebelum menggabungkan dimensi dan menjumlahkan pendapatan.

Penulis: alfianh.id (identitas pratinjau)Menengah2 menit bacaTerbit:

Konten, data, dan tanggal ini merupakan contoh untuk pratinjau situs.

English

Ikuti artikel melalui RSS

Ukuran teks bacaan18px

Buka simpanan / perbaiki data

Simpanan dan ukuran teks hanya untuk browser ini. Tidak ada sinkronisasi antarperangkat.

Tabel fakta penjualan terhubung ke dimensi tanggal dan dimensi produk
Tabel fakta penjualan terhubung ke dimensi tanggal dan dimensi produk
Daftar isi

Ini artikel contoh untuk pembelajaran. Tanggal publikasi dan catatan transaksi bersifat ilustratif.

Star schema memisahkan kejadian yang diukur dari deskripsi untuk mengelompokkannya. Pada toko contoh, penjualan memiliki tanggal, produk, kuantitas, dan amount. Sebelum memilih kolom, tuliskan grain: satu baris fakta mewakili satu baris pesanan yang dikenali oleh order_id dan line_number.

Nyatakan grain dengan jelas

Tabel fakta penjualan terhubung ke dimensi tanggal dan dimensi produk
Setiap fakta menunjuk satu tanggal dan satu versi produk.

Dimensi produk menyimpan satu baris per versi produk; dimensi tanggal menyimpan satu baris per tanggal kalender. Fakta menyimpan kunci menuju baris tersebut. Jika kategori produk berubah dan laporan historis harus mempertahankan kategori lama, buat versi dimensi baru dan pilih kunci yang berlaku saat penjualan. Menimpa kategori akan mengubah pengelompokan penjualan lama.

TabelKunci unikMakna
fact_salesorder_id, line_numberSatu baris pesanan terjual
dim_productproduct_keySatu versi deskripsi produk
dim_datedate_keySatu tanggal kalender

Join tanpa menggandakan uang

Contoh PostgreSQL 18 ini mengasumsikan kunci dimensi unik dan setiap kunci fakta memiliki pasangan:

SELECT d.calendar_date, p.category,
       SUM(f.net_amount) AS net_revenue
FROM fact_sales AS f
JOIN dim_date AS d ON d.date_key = f.date_key
JOIN dim_product AS p ON p.product_key = f.product_key
GROUP BY d.calendar_date, p.category
ORDER BY d.calendar_date, p.category;

Jika dim_product memiliki dua baris dengan product_key yang sama, join menggandakan penjualan terkait. Periksa keunikan kunci dan kelengkapan foreign key sebelum mempercayai total. Inner join juga membuang kunci tanpa pasangan. Bandingkan amount fakta sebelum dan sesudah penambahan deskripsi. Anggota dimensi unknown yang terdokumentasi dapat mempertahankan fakta belum lengkap untuk diselidiki.

Pahami batas ukuran

net_amount dapat dijumlahkan antarbaris pesanan dalam mata uang yang sama. Menjumlahkan harga satuan tanpa kuantitas tidak menghasilkan pendapatan. Saldo harian juga tidak cocok dijumlahkan lintas tanggal karena mengulang nilai stok, bukan mengukur aliran.

Tinjau satu transaksi konkret berisi dua baris. Pastikan terbentuk dua fakta, setiap join cocok tepat sekali, dan agregat sama dengan amount input. Diagram menjelaskan relasi; pemeriksaan ini membuktikan grain tetap terjaga saat pemuatan.

Referensi