Таблица фактов () — основная таблица в многомерной модели хранилища данных, содержащая количественные показатели (меры) бизнес-процессов, подлежащие анализу. Каждая запись в таблице фактов соответствует отдельному событию или измерению состояния объекта в определённый момент времени. Таблица фактов находится в центре схемы «звезда» или «снежинка» и связана отношением «один ко многим» с окружающими её таблицами измерений.

Структура

Таблица фактов содержит два типа столбцов:

Внешние ключи — ссылки на первичные ключи таблиц измерений (например, идентификатор товара, клиента, даты, магазина). Первичный ключ таблицы фактов обычно является составным и состоит из всех внешних ключей. Числовые меры — количественные показатели, на основании которых вычисляются агрегатные данные (например, сумма продажи, количество единиц товара, себестоимость).

Для обеспечения производительности при больших объёмах данных (сотни тысяч и миллионы записей) в таблице фактов, как правило, не хранят повторяющиеся текстовые описания — их выносят в таблицы измерений. Ключевые и некоторые неключевые поля таблицы фактов должны соответствовать будущим измерениям OLAP-куба.

Типы таблиц фактов

В размерном моделировании, согласно методологии , выделяют три основных типа таблиц фактов:

Транзакционные таблицы фактов — наиболее распространённый тип. Каждая строка соответствует одной транзакции или отдельному событию (например, продажа товара, телефонный звонок, снятие денег со счёта). Таблицы периодических снимков — каждая строка фиксирует состояние объекта на определённый момент времени (например, на конец дня или месяца). Типичные примеры — остатки товаров на складе или дневная выручка. Таблицы накапливающихся снимков — каждая строка описывает полный жизненный цикл процесса, а строки обновляются по мере прохождения этапов (например, заказ: создан → оплачен → отгружен → доставлен).

Кроме того, существуют бесфактные таблицы фактов (), которые не содержат числовых мер, но фиксируют отношения «многие ко многим» между измерениями или регистрируют факт наличия события (например, посещаемость культурных мероприятий).

Зернистость

Зернистость (grain) таблицы фактов определяет наиболее атомарный уровень детализации, который представляет каждая запись. Определение зернистости является важнейшим этапом проектирования. Например, зернистость таблицы фактов продаж может быть сформулирована как «объём продаж по дням, по товарам и по магазинам» — в этом случае каждая запись уникально идентифицируется комбинацией дня, товара и магазина. Другие измерения могут присутствовать в таблице как «аффилированные», не влияя на уникальность записей, но позволяя выполнять разрезы данных на более высоких уровнях агрегации.

Меры и аддитивность

Меры в таблице фактов классифицируются по способности суммироваться по измерениям:

Аддитивные меры — могут суммироваться по всем измерениям (например, сумма продаж, количество проданных единиц). Полуаддитивные меры — могут суммироваться по одним измерениям, но не по другим. Например, остатки товаров на складе можно суммировать по товарам и магазинам, но бессмысленно суммировать по времени (сумма остатков за несколько дней не имеет смысла). Неаддитивные меры — не могут суммироваться ни по одному из измерений (например, процентные ставки, курсы валют, цены за единицу).

Использование в многомерных схемах

Таблица фактов является центральным элементом многомерных схем хранения данных:

В схеме «звезда» таблица фактов находится в центре и напрямую связана с каждой таблицей измерений. В схеме «снежинка» некоторые таблицы измерений могут быть нормализованы и разбиты на несколько связанных таблиц. При использовании нескольких таблиц фактов они могут быть организованы в созвездие фактов (fact constellation schema).

Таблицы фактов являются фундаментом хранилища данных: они содержат основные измерения деятельности предприятия и служат конечной целью большинства запросов к хранилищу.

Пример

Для бизнес-процесса розничных продаж таблица фактов Продажи может содержать следующие столбцы:

ID_Даты (внешний ключ к таблице измерений «Время») ID_Магазина (внешний ключ к таблице измерений «Магазин») ID_Товара (внешний ключ к таблице измерений «Товар») ID_Клиента (внешний ключ к таблице измерений «Клиент») Количество (аддитивная мера) Сумма_продажи (аддитивная мера) Сумма_скидки (аддитивная мера)

Каждая строка такой таблицы соответствует одной позиции в чеке (транзакционная зернистость).

Примечания

Литература

Категория:Хранилище данных Категория:Business intelligence