Grain là câu trả lời cho "một dòng trong fact table đại diện cho cái gì". Ví dụ: một dòng là một sản phẩm trong một đơn hàng, hay một dòng là tổng doanh thu một cửa hàng trong một ngày. Grain phải chốt trước khi chọn dimension và measure.
Nên chọn grain ở mức chi tiết nhất có thể (atomic). Từ từng dòng sản phẩm luôn cộng lên được theo đơn, theo ngày; nhưng nếu chỉ lưu theo đơn thì không bao giờ tách ngược ra được doanh thu theo sản phẩm. Hai grain khác nhau thì để hai bảng, không trộn trong một bảng.
Ba loại fact table:
| Loại | Một dòng là | Ví dụ |
|---|---|---|
| Transaction | Một sự kiện tại một thời điểm | Từng dòng sản phẩm trong đơn, từng lượt thanh toán |
| Periodic snapshot | Trạng thái chụp theo chu kỳ | Tồn kho mỗi sản phẩm cuối mỗi ngày, số dư tài khoản cuối tháng |
| Accumulating snapshot | Một quy trình có mốc rõ ràng, dòng được cập nhật khi qua từng mốc | Đơn hàng: ngày đặt, ngày thanh toán, ngày giao, ngày hoàn |
Lưu ý: measure dạng số dư (tồn kho, số dư tài khoản) trong periodic snapshot không cộng được theo thời gian. Cộng tồn kho của 30 ngày ra một con số vô nghĩa; phải lấy giá trị cuối kỳ hoặc trung bình.