Короткий ответ
Таблица фактов описывает измеримые события на фиксированной грануляции, а таблицы измерений — контекст этих событий: клиента, товар, дату, канал и другие признаки.
Как это работает подробнее
В центре схемы «звезда» находится факт с метриками и внешними ключами. Каждая строка факта означает одно событие выбранного уровня детализации, например одну позицию заказа.
- Факт. Обычно содержит много строк, ключи измерений и аддитивные или полуаддитивные метрики.
- Измерение. Содержит описательные атрибуты для фильтрации, группировки и подписей в отчётах.
Пример кода
revenue_by_city.sql
SELECT d.city, SUM(f.amount) AS revenue
FROM fact_orders AS f
JOIN dim_customer AS d ON d.customer_id = f.customer_id
GROUP BY d.city;Что использовать на практике
- Сначала зафиксируйте грануляцию факта, затем определите его ключи и метрики.
- Сверяйте сумму после соединения с контрольной суммой по таблице фактов.
Подводные камни
- Смешанная грануляция. Объединение фактов разного уровня детализации приводит к задвоению метрик.
- Раздутый факт. Повторяющиеся текстовые атрибуты увеличивают объём таблицы и усложняют обновление справочников.