Materi
Ukuran tidak semuanya boleh dijumlahkan. Microsoft membaginya tiga. Ukuran aditif bisa dijumlahkan melintasi dimensi apa pun, misalnya jumlah barang dan nilai penjualan dalam satu mata uang. Ukuran semi-aditif hanya bisa dijumlahkan melintasi sebagian dimensi: saldo stok boleh dijumlahkan antarcabang pada satu tanggal, tetapi tidak antartanggal. Ukuran non-aditif tidak bisa dijumlahkan sama sekali, misalnya suhu, harga satuan, dan persentase.
Sifat ukuran berkaitan dengan jenis tabel faktanya. Fakta transaksi menyimpan satu peristiwa per baris, umumnya pada grain terendah, dan ukurannya aditif. Fakta snapshot periodik menyimpan keadaan pada waktu tertentu, misalnya stok akhir hari atau akhir bulan, dan ukurannya selalu semi-aditif. Microsoft juga menyebut fakta snapshot akumulasi untuk proses bertahap dan fakta tanpa ukuran (factless) yang hanya mencatat kejadian; keduanya tidak dibahas lebih jauh di kelas ini.
Untuk rasio, Microsoft menyarankan menyimpan komponennya, bukan rasionya. Harga rata-rata per barang dihitung dari jumlah nilai dibagi jumlah barang, bukan rata-rata kolom harga satuan, karena rata-rata harga satuan memberi bobot sama pada baris berisi satu barang dan baris berisi sepuluh barang. Di SQLite ada jebakan tambahan: pembagian dua bilangan bulat menghasilkan bilangan bulat yang dipotong, jadi salah satu sisi dikalikan 1.0 lebih dulu.
-- Kafe: harga rata-rata per cangkir yang tertimbang
SELECT menu_key,
ROUND(SUM(nilai) * 1.0 / SUM(cangkir)) AS harga_per_cangkir
FROM fakta_pesanan_kafe
GROUP BY menu_key;