Опубликован: 20.12.2010 | Уровень: специалист | Доступ: платный
Лекция 8:

Метод многомерного моделирования

Факты

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

  • аддитивные факты (Additive facts). Факт называется аддитивным, если его имеет смысл использовать с любыми измерениями для выполнения операций суммирования с целью получения какого-либо значимого результата. Например, дискретные числовые показатели активности деятельности, такие как количество продаж, объем продаж и т.д.;
  • полуаддитивные факты (Semiadditive facts). Факт называется полуаддитивным, если его имеет смысл использовать совместно с некоторыми измерениями для выполнения операций суммирования с целью получения какого-либо значимого результата. Например, числовые показатели интенсивности, такие как остаток на счете, уровень запасов на складе и т.д.;
  • неаддитивные факты (Non-additive facts). Факт называется неаддитивным, если его не имеет смысла использовать совместно с каким-либо измерением для выполнения операций суммирования с целью получения какого-либо значимого результата. Например, измерение комнатной температуры;
  • числовые меры интенсивности (Numerical Measures of Intensity). Факт называется числовой мерой интенсивности, если он, являясь неаддитивным по времени , допускает агрегацию и суммирование по некоторому числу временных периодов. Например, остаток на счете.

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

Проценты и отношения величин (валовая прибыль) являются неаддитивными фактами. Можно хранить как отдельные параметры числитель и знаменатель отношения, когда их раздельное суммирование имеет смысл. И это будут уже аддитивные факты. К неаддитивным фактам относятся также статистические средние суммы, такие как, например, средняя температура за день. Сумма средних дневных температур за неделю не имеет никакого смысла.

Проиллюстрируем понятие аддитивного факта на примере. Пусть сущность таблицы фактов "Продажи" ( рис. 9.3) с атрибутами первичного ключа "Идентификатор времени", "Идентификатор товара", "Идентификатор магазина" имеет следующие факты (метрики): "Количество покупателей", "Суммарная прибыль" и "Количество продаж". Поскольку суммирование может быть выполнено для числовых метрик сущности "Количество продаж" и "Суммарная прибыль" по всем измерениям, эти факты являются аддитивными, как показано в примере ниже.

Пример сущности "Продажи" с аддитивными и полуаддитивными фактами

Рис. 9.3. Пример сущности "Продажи" с аддитивными и полуаддитивными фактами

Пример 9.1. Аддитивные факты можно суммировать по всем измерениям

По измерению "Время":
Дата Товар Магазин Количество продаж Количество покупателей Суммарная прибыль
23.01.2009 CD диск Компьютер 10 10 1500
24.01.2009 CD диск Компьютер 35 30 5250
25.01.2009 CD диск Компьютер 20 15 3000
65 55 9750
По измерению "Товар":
Дата Товар Магазин Количество продаж Количество покупателей Суммарная прибыль
23.01.2009 CD диск Компьютер 10 6 1500
23.01.2009 Принтер Компьютер 1 1 5000
23.01.2009 Сканер Компьютер 2 2 3000
13 9500
По измерению "Магазин":
Дата Товар Магазин Количество продаж Количество покупателей Суммарная прибыль
23.01.2009 CD диск Компьютер 10 10 1500
23.01.2009 CD диск Принтеры 10 5 1500
23.01.2009 CD диск Оргтехника 20 7 3000
40 22 6000

Проиллюстрируем понятие полуаддитивного факта на примере. Рассмотрим сущность таблица фактов "Продажи" ( рис. 9.3). Как видно из примера 7.1, по измерению "Товары" суммирование по метрике "Количество покупателей" не выполнялось, а по измерениям " Время " и "Магазин" суммирование выполнялось. Этот факт является полуаддитивным по отношению к измерению "Товары".

Пример 9.2. Полуаддитивные факты не имеет смысла суммировать по некоторым измерениям

Суммирование метрики "Количество покупателей" по измерению "Товары":
Дата Товар Магазин Количество продаж Количество покупателей Суммарная прибыль
23.01.2009 Бумага для факсов Компьютер 10 6 1000
23.01.2009 Бумага для принтера Компьютер 12 7 1320
13

В примере 9.2 показана таблица, в которой выполнено суммирование метрики "Количество покупателей" по измерению "Товары". Зададим следующий вопрос: "Сколько покупателей купили либо бумагу для принтера, либо бумагу для факса?". Ответ: где-то между 5-ю и 13-ю. Невозможность разделить количество покупателей между товарами для приведенной сущности делает этот факт полуаддитивным для измерения "Товары".

Ключи в таблицах фактов

Первичный ключ в таблице фактов является, как правило, составным первичным ключом. Он состоит из множества внешних ключей, которые служат первичными ключами измерений, связанных с фактами.

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

Рассмотрим подробнее вопрос уникальности первичного ключа таблицы фактов.

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

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

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

Рассмотрим таблицу фактов на схеме рис. 9.4. Гранулированность фактов в ней составляет один день. Факты определяются для этой таблицы как суммы по всем операциям за день.

Пример схемы данных для иллюстрации уникальности первичного ключа таблицы фактов: гранулированность фактов — одни сутки

Рис. 9.4. Пример схемы данных для иллюстрации уникальности первичного ключа таблицы фактов: гранулированность фактов — одни сутки

Предположим, что в измерении "Товары" имеется два вида досок — С1 и С2. Измерение "Даты" содержит по одной строке за день. Предположим, что доски вида С1 были проданы 1 марта 2009 года в 9 утра в количестве 4 штук и вечером перед закрытием магазина в количестве 5 штук. Поскольку гранулированность фактов есть день, то в таблице фактов "Розничные продажи" для каждого проданного товара в каждом магазине будет вставлена только одна строка за день. Так, за 1 марта 2009 года в поле "Количество продаж" будет стоять число 9.

Если мы определим первичный ключ таблицы фактов как конкатенации первичных ключей измерений {Номер товара, Идентификатор даты, Номер магазина}, то этот первичный ключ будет уникальным, т.к. фактом будет только одна строка, вставленная для каждого товара, который продан в каждом магазине в определенный день. Уникальность первичного ключа гарантирована определением гранулированности факта.

Предположим, что руководству торговой компании необходимы отчеты почасовой продажи товаров. Тогда может быть использована схема, показанная на рис. 9.5.

Пример схемы данных для иллюстрации уникальности первичного ключа таблицы фактов: гранулированность фактов – один час

Рис. 9.5. Пример схемы данных для иллюстрации уникальности первичного ключа таблицы фактов: гранулированность фактов – один час

Предположим, что в течение 12 марта 2009 года доски вида С1 продавались следующим образом (табл. 9.1).

Таблица 9.1. Данные по продажам досок
Время Количество
8-00 5
8-30 5
11-00 2
16-00 3
18-00 2

Так как гранулированность таблицы фактов есть одна строка для каждого продукта, проданного в каждом магазине за каждый час, в таблицу будет вставлено 4 строки, фиксирующие продажу досок вида С1 за 2 марта 2009 года. Если мы определим первичный ключ таблицы фактов как конкатенации первичных ключей измерений {Номер товара, Идентификатор времени, Идентификатор даты, Номер магазина}, то этот первичный ключ будет уникальным.

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

Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?

 

Елена Любина
Елена Любина
Россия, Новосибирск, Новосибирский государственный технический университет, 2011