在数据仓库中,我们有慢慢改变尺寸的概念。我只是想知道为什么不存在“缓慢/快速更改FACT”的行话,因为相同的Type1,Type 2度量可用于跟踪FACT表中的更改。

最佳答案

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


交易:您的基本测量结果(含暗淡参考)。没有汇总或汇总测量结果,许多DIM关系
定期的:在定义的时间段内汇总交易事实表的摘要。
累积快照:与2个以上定义的时间段关联的测量


从这些中,我们至少有2个选项,这些选项将导致结果与缓慢更改的事实表非常相似。这完全取决于您的源系统的设置。

选项1:基于交易的源系统

如果您的源系统通过一系列事务(即,初始值+值的变化+值的变化等)跟踪对度量值的更改,则这些事务中的每一个都将最终成为事务事实。然后,定期事实表将其用于​​反映“按期”度量。

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

定期事实表是您的“慢慢变化的事实”表。

源DW_Tansaction_Fact DW_Periodic_Fact
----------------> --------------------> ------------ --------
Acnt1一月+ 10 $ Acnt1一月+ 10 $ Acnt1一月10 $
Acnt1 2月-1美元Acnt1 2月-1美元Acnt1 2月9美元
Acnt1四月+2 $ Acnt1四月+2 $ Acnt1三月9 $
Acnt1月11日$


选项2:CRUD /覆盖源系统

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

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

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

粘贴交易和期间事实表,我们将得到该数据(截至4月底)。同样,定期事实表是您的“慢慢变化的事实”表。

DW_Tansaction_Fact DW_Periodic_Fact
--------------------> --------------------
Acnt1 11 $ Acnt1-Jan-10 $
Acnt1-Feb-09 $
Acnt1-Mar-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--------


或更三类的版本

DW_Accumlative_Fact_CrossTab
Acnt Year YearStartVal CurrentVal
Acnt1 2001 10 9


相关种类

以我的经验,在以下常见业务场景中会出现此类问题:


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


请注意,您现在要处理四组时间(报告的初始期间,初始期间的日期,当前报告期间,当前期间的度量),这将使您难以解释,更不用说最终用户了。

尝试退后一步,向最终用户说明随着时间的推移哪些业务指标会发生变化,倾听他们想要的结果,并据此建立事实。注意,对于同一度量,您可能最终会有多个事实表,这是很好的。

参考:


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

07-24 09:32