Vic*_*tor 8 data-warehouse dimension fact
在数据仓库中,我们有缓慢变化维度的概念.我只是想知道为什么没有"缓慢/快速变化的FACT"的行话,因为相同的Type1,Type 2度量可用于跟踪FACT表中的变化.
根据 DW 大神的说法,有 3 种类型的 FACT 表
从这些中,我们至少有 2 个选项将导致与缓慢变化的事实表非常相似的内容。这完全取决于您的源系统是如何设置的。
选项 1:基于事务的源系统
如果您的源系统通过一系列事务(即初始值 + 值更改 + 更改值等)跟踪度量的更改,那么这些事务中的每一个都会在事务事实中结束。然后,周期事实表使用它来反映“截至期间”的度量。
例如,如果您的源系统跟踪账户的资金进出,您可能会有一个交易事实表,它几乎反映了源资金进/出表。您还将拥有一个周期事实表,该表将在每个时期(在本例中为月)更新,以反映该时期的帐户总值
周期事实表是您的缓慢变化事实表。
来源 DW_Tansaction_Fact DW_Periodic_Fact --------------- -> ----------- -> ------------ -------- 1 月 1 日 +10 美元 1 月 1 月 +10 美元 1 月 1 日 10 美元 Acnt1 Feb -1 $ Acnt1 Feb -1 $ Acnt1 Feb 9$ Acnt1 Apr +2 $ Acnt1 Apr +2 $ Acnt1 Mar 9$ Acnt1 Apr 11$
选项 2:CRUD/覆盖源系统
您更有可能拥有一个源系统,可以让用户直接更新/替换业务度量。在任何时间点,根据源系统,每个度量都有并且只有一个值。您可以在 ETL 过程中通过一些巧妙的技巧进行此交易,但您只能获得受 ETL 计划限制的交易窗口。
在这种情况下,您可以使用周期事实表或累积事实表。
让我们继续使用我们的帐户示例,但该表仅存储针对每个帐户的金额值,而不是交易。这是在源系统中根据需要更新的,因此对于 Acnt1,1 月为 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 年份 一月二月三月四月五月六月八月八月九月十月十一月十二月 2001 Acnt1 10 9 9 11 - - - - - - - -
或者更多的 type3-ish 版本
DW_Accumlative_Fact_CrossTab 会计年度 YearStartVal CurrentVal 第 1 期 2001 年 10 9
有点相关
根据我的经验,当这种常见的业务场景出现时,会出现这种问题:
请注意,您现在正在处理四组时间(报告的初始期间、初始日期的测量、当前报告期间、当前期间的测量),这对您来说已经足够难以解释,更不用说您的最终用户理解了。
尝试退后一步,向您的最终用户解释哪些业务指标会随着时间的推移而发生变化,听取他们想要的结果并相应地构建您的事实。请注意,对于同一度量,您最终可能会得到多个事实表,这很好。
参考: