Прочитано The Data Warehouse Toolkit от Ralph Kimball за хорошее введение в моделирование размеров.
Похоже, что вы сохраняете событие изменения процесса в F_EVENT. Если этот процесс имеет определенное начало и конец, я бы создал таблицу фактов моментального снимка, которая позволит вам отслеживать процесс с течением времени (просто обновляя строку каждый раз, когда процесс перемещается с одного шага на другой).
EDIT:
Я постараюсь сделать общий случай, используя свои размеры в качестве примеров.
Для D_PROCESS моделирование «процесса» обычно не моделируется как измерение, и вы назвали его «что», поэтому я переименую его в «D_ACCOUNT».
Основная модель данных будет для «системы обработки налогов», в которой WORKERS обрабатывают ACCOUNTS, и каждая комбинация ACCOUNT/WORKER имеет несколько возможных «СОСТОЯНИЙ», где этот процесс в настоящее время стоит.
D_ACCOUNT
ACCOUNT_NUMBER
ACCOUNT_TYPE
D_WORKER
WORKER_ID
FIRST_NAME
LAST_NAME
BADGE_NUMBER
SHIFT
D_STATUS
STATUS_ID
STATUS_NAME
Теперь, если я хочу сообщить о всех «событиях», которые произошли с аккаунтом, выполняемых работником, я могу построить Транзакцию уровень таблицы фактов F_EVENT:
F_EVENT
ACCOUNT_ID
WORKER_ID
STATUS_ID
EVENT_TIME_ID
Metrics taken at time of the measurement (Cost, Worker time spent, etc)
Мы называем уникальная комбинация размеров, которая идентифицирует ряд Гранулярность или Зерно таблицы фактов.
Зерна этой таблицы - это учетная запись, рабочий, статус и время. Он отвечает на такие вопросы, как «Сколько времени мои работники на смену 3 тратят на обработку счетов в среду?» или «Сколько событий произошло, что изменило статус обработки на„ЗАКРЫТО“?
Я не уверен, насколько этот тип таблицы поможет.
Вместо этого, говорят, что вы заинтересованы в отслеживании процесса сам как он переходит через различные статусы. Я буду предполагать, что статус всегда движется вперед во времени, от «НЕ НАЧАЛСЯ» до «В ПРОЦЕССЕ» до «ЗАКРЫТО».
Я построю то, что Кимбалл называет «Накопительным Таблица фактов моментальных снимков.
F_TAXPROCESSING
ACCOUNT_ID
WORKER_ID
CURRENT_STATUS_ID
NOT_STARTED_DTTM
NOT_STARTED_FLAG
IN_PROCESS_DTTM
IN_PROCESS_FLAG
CLOSED_DTTM
CLOSED_FLAG
Зерно этой таблицы - это учетная запись, рабочий. Эта таблица отслеживает «процесс», обновляя дату/время изменения состояния и флаг, когда этот статус был достигнут.
Это позволяет отслеживать процесс с течением времени, позволяя вам видеть, сколько учетных записей отреагировали на статус «IN PROCESS», сколько времени потребовалось, чтобы добраться туда и т. Д.
Извините, я имею в виду процесс не продукт (на самом деле это совершенно другое, но я пытался избавиться от наших бизнес-терминов). Вы сказали, что «обновляете» строку, хорошо, но что, если я хочу проанализировать в своем кубе весь процесс в статусе C (от A до D, например), на определенную дату? –
Data Warehousing - это все деловые условия - не пытайтесь «обобщать» слишком много. Решения DW принимают реляционные абстрактные модели и пытаются их моделировать, поскольку бизнес их использует. Я попытаюсь ответить на ваш вопрос в редактировании. –
Спасибо. Но если попытаться перевести наши термины, связанные с французским налоговым выводом, в английских словах, это будет уродливо для вас читать :) –