定期快照与事务性事实表

时间:2018-07-27 11:54:18

标签: data-warehouse dimensional-modeling fact

我是维建模和数据仓库概念的新手,并希望就以下主题寻求任何建议/反馈。

目前,我们有一个每日快照表,用于存储金融产品每天(报告日期)的度量值(价格)。 金融产品可以是股票/股票,债券,基金,期货,甚至是建筑物。如果我们在某天没有获得某产品的价格,那么我们将结转先前的价格(价格最高日期的价格)。

以下包含两个事件的示例描述了我需要您帮助的挑战。...

第一项赛事:在2018年6月26日,我们收到的A基金价格为100。

数据仓库中的暂存区域包含:

Price Date|Product|Price
----------+-------+-----
26-06-2018|Fund-A |100

我们的定期快照事实表每天包含此价格(从26-06到30-06)

Reporting Date|Price Date|Product*|Price
--------------+----------+-------+------
26-06-2018    |26-06-2018|Fund-A |100
27-06-2018    |26-06-2018|Fund-A |100
28-06-2018    |26-06-2018|Fund-A |100
29-06-2018    |26-06-2018|Fund-A |100
30-06-2018    |26-06-2018|Fund-A |100

* =现实生活中的替代键

第二个事件:在2018年1月7日,我们收到价格为20-02-2018的Fund-A的追溯价格99。

数据仓库中的暂存区域现在​​包含两个记录:

Price Date|Product|Price
----------+-------+-----
20-02-2018|Fund-A |99
26-06-2018|Fund-A |100

Periodic Snapshot Fact表获取Fund-A的最新可用价格并将其结转。

Reporting Date|Price Date|Product|Price
--------------+----------+-------+------
26-06-2018    |26-06-2018|Fund-A |100
27-06-2018    |26-06-2018|Fund-A |100
28-06-2018    |26-06-2018|Fund-A |100
29-06-2018    |26-06-2018|Fund-A |100
30-06-2018    |26-06-2018|Fund-A |100
01-07-2018    |26-06-2018|Fund-A |100

在这种情况下的“差距”是我们没有在定期快照表中存储20-02-2018的回溯价格。事实根本没有记录在数据仓库中。可以在“每日快照”表中添加回溯价格,但是在重新计算数据仓库中的其他历史事实时会造成很多挑战(目前我们不使用多维数据集)。

因此,我一直在考虑保留当前的处理方式,并接受这样的事实,即在收到追溯价格时,这些未反映在历史计算的事实中。为了仍然捕捉到追溯价格的事实,我们将引入一个额外的Transactional Snapshot表,该表基本上是登台表的“副本”:

Price Date|Product|Price
----------+-------+-----
20-02-2018|Fund-A |99
26-06-2018|Fund-A |100

这仍然可以反映出我们有一个追溯的价格,但是我们没有在任何计算中使用它。

交易事实表是捕获滞后价格的正确设计模式吗?

任何建议/反馈将不胜感激。

非常感谢, 米克洛

0 个答案:

没有答案