Хранилище данных - моделирование измерений

Я новичок в BI / Datawarehousing, и после создания нескольких простых примеров у меня возникла необходимость построить более сложную структуру. Изначально мой проект включал лицензии на продукты, и я измерял, сколько продано, по месяцам / годам и по программам, и просто подсчитывал количество лицензий.

Теперь требуется ввести скачки от этих показателей. Например, когда вы переходите к определенной группе лицензий, они хотят видеть совершенно другие показатели для них. Например, если в марте 2011 года было продано 100 лицензий, сколько из них установили, активировали и аннулировали продукт. (мы отслеживаем эту информацию, но не в DW). Итак, я ищу лучший способ сделать это ... Я предполагаю, что первое, что мне нужно сделать, это добавить три измерения для установленных, активированных и отмененных - и получить три таблицы фактов? Или иметь одну таблицу фактов для каждой лицензии и иметь строку для отмененных, установленных или активированных? (так что одна лицензия может быть повторена). Или у вас есть одна таблица фактов с разными полями для установленных, отмененных, активированных? Кроме того, как связать одну таблицу фактов с другой? Это через измерения, или они могут быть связаны каким-то другим образом?

Любая помощь приветствуется!

РЕДАКТИРОВАТЬ:

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

Но они хотят видеть, учитывая временные рамки, сколько было куплено и сколько из них установлено. например, если временной интервал - март, и 100 были проданы в марте, из этих 100, сколько было установлено - даже если они могли быть установлены намного позже, чем март, и, следовательно, дата строки будет не в том временном интервале, который они ищут в .... это обычная проблема? как это решается?


person M.R.    schedule 14.04.2011    source источник


Ответы (1)


Я предполагаю, что первое, что мне нужно сделать, это добавить три измерения для установленных, активированных и отмененных - и получить три таблицы фактов?

Не совсем. Продажа лицензии - это факт. У него есть цена.

Продажа лицензии имеет такие параметры, как дата, продукт, клиент и программа.

«Установка» или «активация» - это событие изменения состояния лицензии. У вас есть «события» для каждой лицензии (продажа, установка, активация и т. Д.)

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

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

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

Это очень хорошо работает.

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

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

Верно. Вы объединяете вместе несколько строк из таблицы фактов. Строка, в которой было продано событие, внешняя соединялась с строкой, в которой событие было установлено, внешняя соединялась со строкой, в которой событие было активировано, и т. Д. Это просто внешние соединения фактов.

Так. Подсчитать продажи в марте несложно. Событие = "Распродажа". Время - это все строки, где time.month = "march". Легкий.

Подсчет продаж в марте, ставших установками. Те же «мартовские продажи», где пункт external объединен со всеми событиями «установки» для этих лицензий. Счетчик «продаж» такой же, как и количество (*). Количество установок может быть меньше, потому что внешнее соединение помещает некоторые нули.

Подсчет продаж в марте, которые стали активациями. "Маршевые продажи", где внешнее предложение объединено со всеми событиями "активации". Обратите внимание, что активация не имеет ограничения по дате.

Или у вас есть одна таблица фактов с разными полями для установленных, отмененных, активированных?

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

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

Кроме того, как связать одну таблицу фактов с другой? Это через измерения, или они могут быть связаны каким-то другим образом?

Размеры по определению. В таблице фактов есть только две вещи - измерения и FK к размерам.

Некоторые измерения (например, «экземпляр лицензии») являются вырожденными, потому что измерение может почти не иметь никаких используемых атрибутов, кроме PK.

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

Пожалуйста, воспользуйтесь набором инструментов хранилища данных Ральфа Кимбалла, прежде чем делать что-либо еще.

person S.Lott    schedule 14.04.2011
comment
@ user708305: Мне жаль, что я подумал, что это было эмоционально. Я пытаюсь сделать здесь очень ясную мысль. Я стараюсь быть простым и прямым. Удалите все комментарии к статусу. Они не помогают. Я пытаюсь сделать вопрос полным и последовательным, а ответ - простым и исчерпывающим. Комментарий статуса тоже не помогает. Комментарии к статусу - это не вопрос и не ответ, это своего рода мета-беседа. Просто удалите их. - person S.Lott; 18.04.2011