数据仓库中是否有缓慢更改 FACT 的概念



在数据仓库中,我们有缓慢变化维度的概念。 我只是想知道为什么没有"缓慢/快速变化的事实"的行话,因为相同的类型1,类型2度量可用于跟踪FACT表中的变化。

根据DW神的说法,有3种类型的FACT表

  • 交易:使用暗淡参考进行基本测量。 测量值未汇总或汇总,大量 DIM 关系
  • 定期:在定义的时间段内汇总事务事实数据表的摘要。
  • 累积快照:与 2+ 定义的时间段相关的测量

从这些中,我们至少有 2 个选项,它们将导致与缓慢变化的事实表非常相似的东西。这完全取决于源系统的设置方式。

选项 1:基于事务的源系统

如果您的源系统通过一系列事务(即初始值 + 值变化 + 更改值等)跟踪测量值的更改,则这些事务中的每一个最终都成为事务事实。然后,定期事实表使用它来反映"截至期间"的度量。

例如,如果您的源系统跟踪账户的进出资金,您可能会有一个交易事实表,该表几乎反映了源资金的输入/输出表。您还将拥有一个定期事实数据表,该表将在每个期间(在本例中为月份)更新,以反映该期间帐户的总价值

周期性事实表是缓慢变化的事实表。

来源DW_Tansaction_Fact DW_Periodic_Fact ---------------  ->-------------------  ->-------------------- ACNT1 1月 +10$ ACNT1 1月 +10$ ACNT1 1月 10$ ACNT1 二月 -1 $ ACNT1 二月 -1 $ ACNT1 二月 9$ Acnt1 4月 +2 $ Acnt1 4月 +2 $ Acnt1 3月 9$ Acnt1 4 月 11 日$

选项 2:CRUD/覆盖源系统

您更有可能拥有一个允许用户直接更新/替换业务度量的源系统。在任何时间点,根据源系统,每个度量都只有一个值。您可以在 ETL 过程中通过一些巧妙的技巧进行此交易,但您只会获得受 ETL 计划限制的交易窗口。

在这种情况下,您可以使用周期性事实表或累积事实表。

让我们坚持我们的帐户示例,但表不是交易,而是存储每个帐户的金额值。这在源系统中根据需要进行了更新,因此对于 Acnt1,1 月份为 10$,2 月 9 美元和 4 月 11 美元

粘贴交易和期间事实表,我们最终会得到这些数据(截至 4 月底)。同样,周期性事实表是缓慢变化的事实表。

DW_Tansaction_Fact DW_Periodic_Fact  -------------------  ->-------------------- ACNT1 11$ ACNT1-1月-10$ ACNT1-二月-09$ ACNT1-三月-09$ Acnt1-Apr-11$

但我们也可以使用累积事实表,该表可以包含给定年份的所有月份值。

DW_Accumlative_Fact_CrossTab 年份 Acnt 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 2001 ACNT1 10 9 9 11

- - - - - - - 或更类型 3 的版本

DW_Accumlative_Fact_CrossTab Acnt Year YearStartVal CurrentVal ACNT1 2001 10 9

相关种类

根据我的经验,当这种常见的业务场景出现时,会出现此类问题:

  1. 有一个带有数据库的核心业务系统。
  2. 业务
  3. 定期发布报告,按时间段汇总核心业务系统中的值
  4. 核心业务系统允许追溯更新数据 - 这是通过覆盖值来处理的。
  5. 业务部门需要知道为什么 6 月份运行的同一报表中的 1 月份数据不再与 2 月份运行的报告中的 1 月份数据匹配。

请注意,您现在正在处理四组时间(报告的初始期间、初始期间日期的度量、当前报告期间、当前期间的度量),这对于您来说很难解释,更不用说您的最终用户了。

尝试退后一步,向最终用户解释哪些业务度量随时间而变化,倾听他们想要的结果并相应地构建事实。请注意,对于同一度量值,您最终可能会得到多个事实数据表,这很好。

参考:

  • http://www.kimballgroup.com/2008/11/fact-tables/
  • http://www.zentut.com/data-warehouse/fact-table/

最新更新