阅读 Ralph Kimball 撰写的 The Data Warehouse Toolkit,了解维度建模的精彩介绍。
听起来您在 F_EVENT 中存储了一个流程更改事件。如果这个过程有一个定义的开始和结束,我会建立一个快照事实表,它可以让你随着时间的推移跟踪这个过程(只需在每次过程从一个步骤移动到另一个步骤时更新行)。
编辑:
我将尝试使用您的尺寸作为示例来制作一般情况。
对于 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)
我们将标识行的唯一维度组合称为事实表的粒度或粒度。
此表的粒度是 Account、Worker、Status 和 Time。它回答了诸如“我的 3 班工人在周三花了多少时间处理账户?”之类的问题。或“发生了多少事件将处理状态更改为“CLOSED”?
我不确定这种类型的表格会有多大帮助。
相反,假设您有兴趣跟踪流程本身,因为它在各种状态中移动。我将假设状态总是及时向前移动,从“未开始”到“处理中”再到“关闭”。
我将构建 Kimball 所说的“累积快照事实表”。
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
此表的粒度是 Account, Worker。此表通过更新状态更改的日期/时间以及达到该状态时的标志来跟踪“过程”。
这使您可以随着时间的推移跟踪流程,让您查看有多少帐户对“处理中”状态做出了反应,到达那里花了多长时间等等。