维度建模 Created/Modified Date/Person
Dimensional Modeling Created/Modified Date/Person
将创建者、创建时间戳、修改者、修改时间戳包含到维度模型中的最佳做法是什么?
前两个永远不会改变。最后两个对于一些数据元素变化缓慢,但对于其他数据元素变化很快。但是,我更喜欢一致的方法,以便报告用户熟悉它。
假设我真的只关心最近的值;我不需要历史。
是否最好将它们放入一个维度中,因为知道对于高度修改的数据,该维度会经常更改?或者,将它们放入事实 table 中,将不变的 Created 信息以与销售订单号成为退化维度的方式大致相同的方式处理会更好吗?
在我的回答中,我假设这些附加列没有定义维度记录的有效性,并且您正在谈论Slowly Changing Dimension type 1
所以我们实际上在这里谈论维度元数据,关于谁/哪个进程创建或修改了维度行。
我总是将这种元数据放在维度中,因为它:
- 与次元变化有关。这些变化的发生与事实无关 table
- 一般来说,建议 Fact tables 尽可能小。如果您的事实 table 将包含 5 个维度,这将导致向您的事实 table 添加 5*4=20 额外的列,这将严重膨胀并影响表现。
将创建者、创建时间戳、修改者、修改时间戳包含到维度模型中的最佳做法是什么?
前两个永远不会改变。最后两个对于一些数据元素变化缓慢,但对于其他数据元素变化很快。但是,我更喜欢一致的方法,以便报告用户熟悉它。
假设我真的只关心最近的值;我不需要历史。
是否最好将它们放入一个维度中,因为知道对于高度修改的数据,该维度会经常更改?或者,将它们放入事实 table 中,将不变的 Created 信息以与销售订单号成为退化维度的方式大致相同的方式处理会更好吗?
在我的回答中,我假设这些附加列没有定义维度记录的有效性,并且您正在谈论Slowly Changing Dimension type 1
所以我们实际上在这里谈论维度元数据,关于谁/哪个进程创建或修改了维度行。
我总是将这种元数据放在维度中,因为它:
- 与次元变化有关。这些变化的发生与事实无关 table
- 一般来说,建议 Fact tables 尽可能小。如果您的事实 table 将包含 5 个维度,这将导致向您的事实 table 添加 5*4=20 额外的列,这将严重膨胀并影响表现。