简单场景:我想创建数据仓库,其中包含有关“问题”(成本、工作时间等)的信息。问题的状态也可能会随着时间而改变。那么我正在创建一个名为 issueRealization 的事实表来描述每个问题。
我的问题是:我应该创建“问题”维度,它会给我一对一的关系 beetwen 维度和事实表吗?或者我应该将问题维度划分为最小维度,如状态等?
简单场景:我想创建数据仓库,其中包含有关“问题”(成本、工作时间等)的信息。问题的状态也可能会随着时间而改变。那么我正在创建一个名为 issueRealization 的事实表来描述每个问题。
我的问题是:我应该创建“问题”维度,它会给我一对一的关系 beetwen 维度和事实表吗?或者我应该将问题维度划分为最小维度,如状态等?
问题状态跟踪是使用累积快照事实表跟踪问题状态随时间变化的一个很好的例子。
例如,假设这是一个 IT 问题/错误/增强管理系统,问题只有 3 个状态,“已创建”、“进行中”和“已解决”。
问题事实表如下所示:
ID Number (Degenerate Dimension)
Issue description (Degenerate dimension. You can also create a 1-1 table for these if it's not often used in reporting)
Type ID (bug/enhancement/etc, this is a dimension key)
Assigned Developer ID (Dimension key)
Current Status ID (Status dimension key)
Date Created (DATE dimension)
Created Flag (1 = created, 0 = otherwise)
Date In Progress (DATE dimension)
In Progress Flag (1 = created, 0 = otherwise)
Date Resolved (DATE dimension)
Resolved Flag (1 = created, 0 = otherwise)
Created Datetime (measure)
InProgress Datetime (measure)
Resolved Datetime (measure)
Worktime Interval (measure)
Cost (measure)
该表的粒度是每个问题 ID 号 1 行。
使用这种类型的事实表,每次源系统修改问题时,您都会更新同一行。请注意我们如何为每种状态类型创建一个字段,以及一个日期时间记录,以允许我们计算诸如“创建和解决状态之间的时间”之类的指标。此外,我添加了一个间隔字段以允许您存储“实际”工作时间,例如开发人员用于修复的“小时”。这很容易是一个整数。
然后,该表将能够回答有关问题的任何问题,并提供汇总以显示“有多少问题需要超过 1 周才能解决”等。