我有一个小星型模式,表示 Jira 中问题的时间条目。我有一个 IssueAttributes 类型的 2 维表,然后是一个 TimeEntry 事实表。
维度表的简化视图:
+----------+---------+-------------+-----------+-----------+------------+----------+
| IssueKey | IssueID | IssueNumber | IssueName | IsCurrent | ValidFrom | ValidTo |
+----------+---------+-------------+-----------+-----------+------------+----------+
| 1 | 123456 | PR-1000 | Original | 0 | 2000-01-01 |2020-04-09|
+----------+---------+-------------+-----------+-----------+------------+----------+
| 2 | 123456 | PR-1000 | Changed | 1 | 2020-04-10 |9999-1231 |
+----------+---------+-------------+-----------+-----------+------------+----------+
事实表的简化视图:
+--------------+---------+-----------+
| TimeEntryKey | IssueKey| TimeEntry |
+--------------+---------+-----------+
| 11111 | 1 | 1.25 |
+--------------+---------+-----------+
| 11112 | 2 | 1.5 |
+--------------+---------+-----------+
当我插入事实表时,我使用的是IssueKey
维度表中的当前值,这似乎是正确的方法。但是,如果我想获取时间条目的 SUM 并将它们分组IssueName
,则会导致 2 行,因为名称在第一行和第二行之间发生了变化。我的印象是最好保持简单的连接并使用键,但在这种情况下,您似乎需要先连接到 Dimension 上的维度IssueKey
,然后再将其连接到 and 上的IssueNumber
维度IsCurrent = 1
为了获取当前版本数据的属性。我这样做没有问题,但我也理解在 DW 中连接应该很简单,因此最终用户不必考虑这些连接是如何工作的,这似乎与这种理解相矛盾。我是否正确地考虑了这一点?您不应该返回并更新事实表中的 FK,对吗?我是否需要一个一致的维度或其他东西来保持某些属性随着时间的推移保持一致?
我目前的方法是将体操放在一个视图中,这样最终用户就可以引用该视图,而不必考虑所有的连接。我在想这个错误的方式吗?