0

标题可能令人困惑,所以我想介绍一下我目前的问题。

请想象以下情况:系统存储设备的问题,应由合格的工作人员修复。我有表“问题”:

  • 标识为 PK
  • workerid FK
  • 描述问题是否已解决或未解决的状态
  • 预计完成时间
  • 实际完成时间

和其他列。我还有一个数据仓库,它将存储“问题”并描述这些“工人”的表现(主要是工作时间)。

在 ETL 过程中,最大的问题是“未解决的问题”。我可能有两种可能:

a) 处理只解决了“问题”,直到它们完成才解决,然后等到它们完成并处理它们。但是,此任务不会包含在我的报告中,这可能需要很长时间才能完成,这在业务方面可能至关重要。

b) 处理已解决和未解决的问题,Fact 表中的 PK 可以是 issueId 和 status。但随后我将存储几乎相同的问题,这些问题可能很奇怪,并且难以分析。

这是常见的情况吗?这两种可能性中哪一种看起来更合理?或者可能还有其他更好的方法来做到这一点?

4

1 回答 1

1

似乎应该有一个问题维度,并且该维度将包含状态列。改变事实有几个问题:

  1. 您将不得不设置一个计划的进程,该进程每 x 分钟更新一次事实表的状态列。我总是尽量避免更新事实表,因为它会使多维数据集处理更加困难,它会引入阻塞,并且更改跟踪很困难(状态何时更改,谁更改了,为什么?)。此外,如果/当您升级到 SQL 2012 并希望使用列存储索引(它彻底改变了星型模式查询性能),您将无法直接更新列。
  2. 尺寸有时会发生变化。事实并非如此。如果状态在维度中,也很容易设置更改跟踪。研究缓慢变化的维度。
于 2012-09-03T21:54:03.607 回答