迷你尺寸和日期时间

时间:2017-07-11 21:12:02

标签: database-design data-warehouse fact-table

我正在设计我的第一个DWH系统并遇到了一个我在任何书籍/文章中都找不到的用例。

假设我有以下维度:

  • 学生
  • 主题

我有一个事实表:

  • 分级

名为Student的维度是我遇到的问题。它包含所有基本信息列,这些列被认为是常量且不可更新的。但是,我有4列描述学生目前的居住地:地址,城镇,传真号码和国家。这些很容易改变。

在我分析如何解决这个问题时,我非常依赖Kimball Group的文章,我明白可以通过使用缓慢变化的维度类型5 来解决 - 通过向{添加迷你维度{1}}维度。

这对我来说很有意义,但是,这部分让我完全困惑:我能够掌握的所有例子中都没有Student的迷你维度。 /强>

如果我理解正确,我们需要能够随时跟踪微维度记录的变化,因此记录一个简单的变化(没有DT)就不会削减它,对吗?

有人可以帮助我更好地理解这一点吗?可以,通过这本书,迷你维度包含一个DT?

P.S。我本来期望类似于Type 6,但没有历史专栏。

2 个答案:

答案 0 :(得分:2)

如果我正确地遵循它(“类型5”对我来说是新的),他们称之为类型5,因为它是类型4 +类型1.这给了我们:

类型4,一个包含“基本”维度(学生)和迷你维度(称之为居住)的星型模式。这些维度与事实表相关,但彼此不相关。

类型5,你仍然有两个维度,但现在你将(居住)迷你维度的一个键添加到“基础”维度(学生)...并且你将它视为类型1中的任何其他事实慢慢变化维度,因为数据在更改时被替换/覆盖。类型1维度不记录数据已更改,因此不会跟踪数据何时更改,因此旧值丢失

在何时/如何考虑时间似乎取决于您的建模。如果时间是事实表的一部分,那么当他们选择主题时,可以通过联接找到学生当前居住地类型4。尴尬,但也许充足?如果您需要知道学生在参加科目时居住的是什么,请输入2个缓慢变化的维度。如果住宿很少是一个因素,可以接受学生住宿和学生住宿查询表的雪花。

(如果我们在这里谈宿舍,你的宿舍桌可能不会太大 - 但传真号码真的让我失望。传世在世纪之交有点老了,这些天学生/教育系统是什么需要他们吗?)

答案 1 :(得分:1)

您是否考虑将学生维度的动态属性移动到随时间戳提供的支腿(可能是桥接表可行)?或者,您可以简单地使用类型2缓慢变化的维度,在属性实例值更改时向学生维度表添加新行。希望这会有所帮助。