Таблица фактов
Таблица фактов (fact table) - это центральная таблица в схеме данных хранилища данных или витрины данных, которая содержит количественные показатели, подлежащие анализу. Каждая запись в таблице фактов соответствует событию или транзакции, произошедшей в бизнесе: продаже, клику по рекламе, звонку, регистрации, добавлению товара в корзину.
В контексте интернет-маркетинга таблица фактов становится основой для анализа эффективности рекламных кампаний, поведения пользователей и финансовых результатов. Вместе с таблицами измерений (справочниками) она образует хорошо известную схему «звезда», которая позволяет быстро и гибко строить отчёты и дашборды в BI-системах.
Зачем нужна таблица фактов
[править]Таблица фактов выполняет несколько ключевых функций в аналитической архитектуре.
Хранение событий
[править]В таблице фактов фиксируются все значимые события бизнеса. Это может быть каждая продажа, каждый клик по рекламному объявлению, каждый звонок клиента. Детальная запись событий позволяет потом анализировать их в любых разрезах.
Основа для расчёта метрик
[править]Все количественные показатели, которые используются в отчётах - выручка, количество лидов, стоимость клика, конверсия - рассчитываются на основе данных из таблицы фактов. Без неё невозможна никакая серьёзная аналитика.
Связь с измерениями
[править]Таблица фактов содержит ссылки (ключи) на таблицы измерений, которые описывают, кто, где, когда и при каких обстоятельствах произошло событие. Это позволяет группировать и фильтровать данные по любым признакам.
Структура таблицы фактов
[править]Таблица фактов имеет типовую структуру, которая отличает её от других таблиц в базе данных.
Количественные показатели (меры)
[править]Это числовые поля, которые содержат измеряемые значения. Они могут быть:
- Аддитивными: можно складывать по всем измерениям. Например, выручка, количество кликов, расходы на рекламу.
- Полуаддитивными: можно складывать по одним измерениям, но нельзя по другим. Например, остатки на складе можно складывать по товарам, но нельзя по времени (остаток на конец дня не равен сумме остатков).
- Неаддитивными: нельзя складывать вообще. Например, проценты, рейтинги, средние значения.
Примеры мер в маркетинговой таблице фактов:
- Сумма расхода (в рублях).
- Количество кликов.
- Количество показов.
- Количество лидов.
- Количество продаж.
- Сумма выручки.
Внешние ключи на измерения
[править]Это ссылки на таблицы измерений. Каждый ключ соответствует одному из аспектов описания события. Например:
- Дата ID (ссылка на таблицу дат).
- Канал ID (ссылка на таблицу каналов трафика).
- Кампания ID (ссылка на таблицу рекламных кампаний).
- Продукт ID (ссылка на таблицу товаров).
- Регион ID (ссылка на таблицу регионов).
Совокупность этих ключей образует составной первичный ключ таблицы фактов.
Дополнительные атрибуты
[править]Иногда в таблицу фактов включают поля, которые не являются ни мерами, ни ключами, но нужны для фильтрации или группировки. Однако в правильно спроектированной схеме такие поля стараются выносить в измерения.
Типы таблиц фактов
[править]В зависимости от характера данных выделяют разные типы таблиц фактов.
Транзакционные таблицы фактов
[править]Самый распространённый тип. Каждая запись соответствует одной транзакции или событию. Например, каждая продажа, каждый клик, каждый звонок. Такие таблицы содержат максимально детальную информацию и обычно очень большие по объёму.
Таблицы фактов снимков состояния
[править]Фиксируют состояние объекта на определённый момент времени. Например, остатки товаров на складе на конец каждого дня или количество активных подписчиков на начало месяца.
Таблицы фактов накопленных снимков
[править]Отслеживают процесс выполнения бизнес-процесса от начала до конца. Например, заказ может проходить через этапы: создан, оплачен, передан в доставку, доставлен, получен. Такая таблица будет содержать одну запись на заказ с датами каждого этапа.
Таблица фактов в схеме «звезда»
[править]Таблица фактов является центром схемы «звезда», вокруг которой располагаются таблицы измерений.
Схема «звезда»
[править]В центре - таблица фактов с мерами и ключами измерений. От неё лучами расходятся таблицы измерений, каждая из которых содержит подробную информацию об аспекте события.
Преимущества схемы «звезда»:
- Простота понимания для бизнес-пользователей.
- Высокая скорость выполнения запросов, так как используется меньшее количество соединений таблиц.
- Оптимальна для большинства BI-инструментов.
Пример для интернет-маркетинга
[править]Представим таблицу фактов «Клики по рекламе» со структурой:
- Дата ID (ключ на таблицу «Дата»)
- Канал ID (ключ на таблицу «Каналы»)
- Кампания ID (ключ на таблицу «Кампании»)
- Пользователь ID (ключ на таблицу «Пользователи»)
- Страница ID (ключ на таблицу «Страницы»)
- Стоимость клика (мера)
Таблицы измерений:
- Дата: год, квартал, месяц, день, день недели, праздник.
- Каналы: название канала, тип канала, рекламная система.
- Кампании: название кампании, бюджет, менеджер, дата запуска.
- Пользователи: ID, регион, устройство, браузер, новый или вернувшийся.
- Страницы: URL, тип страницы, категория товара.
С помощью такой модели можно ответить на множество вопросов:
- Сколько кликов было вчера?
- Какой канал даёт самые дешёвые клики?
- Какие кампании работают лучше всего по выходным?
- С каких устройств приходит самый дорогой трафик?
Требования к таблицам фактов
[править]При проектировании таблиц фактов нужно соблюдать несколько важных правил.
Гранулярность
[править]Гранулярность (уровень детализации) должна быть чётко определена и соответствовать бизнес-требованиям. Одна запись в таблице фактов должна соответствовать одному событию на самом низком уровне детализации. Лучше хранить детальные данные и при необходимости агрегировать их, чем потерять возможность детализации.
Неизменяемость
[править]Факты, однажды попавшие в таблицу, не должны изменяться. Если нужно исправить ошибку, создаётся корректирующая запись, а не изменяется существующая. Это гарантирует целостность исторических данных.
Минимум текстовых полей
[править]Таблица фактов должна содержать в основном числовые меры и внешние ключи. Все текстовые описания должны храниться в таблицах измерений. Это экономит место и ускоряет запросы.
Индексация
[править]Внешние ключи должны быть проиндексированы для быстрого соединения с таблицами измерений.
Иллюстрация маркетинговой таблицы фактов
[править]Конкретный пример для интернет-магазина.
Таблица фактов «Продажи»:
| Продажа ID | Дата ID | Клиент ID | Товар ID | Канал ID | Количество | Цена | Сумма |
|---|---|---|---|---|---|---|---|
| 1001 | 20260301 | 501 | 101 | 1 | 2 | 500 | 1000 |
| 1002 | 20260301 | 502 | 102 | 2 | 1 | 1200 | 1200 |
| 1003 | 20260302 | 501 | 103 | 1 | 1 | 300 | 300 |
Таблица измерений «Клиенты»:
| Клиент ID | Имя | Город | Возраст | Пол | Дата первой покупки |
|---|---|---|---|---|---|
| 501 | Юрий | Москва | 34 | М | 2025-11-15 |
| 502 | Айгуль | Казань | 28 | Ж | 2026-02-20 |
Таблица измерений «Товары»:
| Товар ID | Название | Категория | Бренд | Себестоимость |
|---|---|---|---|---|
| 101 | Смартфон X | Электроника | Samsung | 350 |
| 102 | Наушники Y | Аксессуары | Sony | 800 |
| 103 | Чехол Z | Аксессуары | Apple | 150 |
Таблица измерений «Каналы»:
| Канал ID | Название канала | Тип канала |
|---|---|---|
| 1 | Яндекс.Директ | Контекстная |
| 2 | VK Реклама | Таргет |
Такая структура позволяет анализировать продажи в любых разрезах: по времени, по клиентам, по товарам, по каналам, а также комбинировать эти разрезы.
