具有大维度的定期快照事实 table

Periodic snapshot fact table with large dimensions

我被要求制作星图模型。
我有 3 个维度:

  1. 日期(日、月、年、周、季度...)
  2. 地点(500 个不同的值)
  3. 产品(8 万种不同的产品)

主要问题是一天结束时每个地方存储了多少物品(产品)。

经过一段时间的维度建模学习。我想我应该实施 定期快照 table。然而,通过阅读 Kimball 文档,我注意到定期快照需要为维度的每个组合输入一个条目。这意味着我应该每天添加 40M 行 (80k*500).
知道产品是(真正的)缓慢移动的,并且许多地方在很长一段时间内存储 产品,这听起来像是一个极端的矫枉过正。
仅供参考,三年后源数据库中的事务为 150k 行。

那么我真的应该每天添加 4000 万行,还是只添加指定产品的非空商店?另外,如果有一天由于某种原因所有商店都空了,我是否应该为那天做一个条目(商店和产品的维度 N/A)?

您建模正确。这取决于规格,但通常您只存储某个位置存在的产品(您不存储零),这可能会产生一个大大低于最大值 80k 的数字。

如果你想进一步减少你的数字,你可以存储最后 N 天,然后开始在 "cold" table 中移动数据。您存储(比如说)最近 10 天的快照,然后仅在主要 "hot" 事实 Table.

中存储每月快照

不排除在报表系统中即时计算快照的可能性,这取决于您的环境,这可能很容易(例如在 MDX 或 DAX 中)。混合解决方案也是可能的(即仅即时计算最后一个月)。