Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Таблица фактов (итогов)

Таблица фактов (итогов) (Summary tables) является основной таблицей ХД. Это таблицы, которые содержат предварительно вычисленные на основе первичных данных, и для увеличения производительности запросов создаются по наиболее часто используемым измерениям. Как правило, она содержит сведения об объектах или событиях, совокупность которых будет в дальнейшем анализироваться. Если проводить аналогию с многомерной моделью, то строка таблицы фактов соответствует ячейке гиперкуба. Обычно говорят о четырех наиболее часто встречающихся типах фактов. К ним относятся факты, связанные с:

транзакциями (Transaction facts)

Они основаны на отдельных событиях (типичными примерами которых являются телефонный звонок или снятие денег со счета с помощью банкомата);

"моментальными снимками " (Snapshot facts)

Основаны на состоянии объекта (например, банковского счета) в определенные моменты времени, например на конец дня или месяца. Типичными примерами таких фактов являются объем продаж за день или дневная выручка;

элементами документа (Line-item facts)

Основаны на том или ином документе (например, счете за товар или услуги) и содержат подробную информацию об элементах этого документа (например, количестве, цене, проценте скидки);

событиями или состоянием объекта (Event or state facts)

Представляют возникновение события без подробностей о нем (например, просто факт продажи или факт отсутствия таковой без иных подробностей).

На рисунке представлен куб, разложенный по плоскостям. Центральная таблица (начинка куба) - есть таблица фактов (меры). С ней отношениями "один ко многим" связаны таблицы измерений (стенки многомерной коробки). Такая схема получила название "звезда". Идея схемы звезда заключается в том, что имеются таблицы для каждого измерения, а все факты помещаются в одну таблицу, индексируемую множественным ключом, составленным из ключей отдельных измерений.

Причина, по которой данная схема названа "звездой" достаточно очевидна. Концы звезды образуются таблицами измерений, а их с таблицей фактов, расположенной в центре, образуют лучи. В терминологии Кодда, каждый луч схемы звезды задает направление консолидации данных по соответствующему измерению (например, Магазин – Город/район – Регион).

В схеме "звезда" каждое измерение куба содержится в одной таблице, в том числе и при наличии нескольких уровней иерархии (государство - регион - нас.пункт в таблице "Покупатель", год -месяц -день в таблице "Период").

схема звезда - куб

схема звезды

В общем случае факты имеют разные множества измерений, и тогда их удобно хранить не в одной, а в нескольких таблицах; кроме того, в различных запросах пользователей может интересовать только часть возможных измерений.

Пример.

Таблица Product Dim в этом примере может быть разбита на две: собственно изделия и категории изделий. Однако это все равно будет одно продуктовое измерение.

Но при таком подходе при большом числе независимых измерений необходимо поддерживать множество таблиц фактов, соответствующих каждому возможному сочетанию выбранных в запросе измерений, что приводит к неэкономному использованию внешней памяти, увеличению времени загрузки данных в БД схемы звезды из внешних источников и сложностям администрирования.

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

  • для многомерного анализа пригодны таблицы фактов, содержащие как можно более подробные данные, то есть соответствующие членам нижних уровней иерархии соответствующих измерений.
  • в таблице фактов отсутствуют какие-либо сведения о том, как группировать записи при вычислении агрегатных данных. Недостатки и преимущества каждого подхода, в общем-то, очевидны.