Sql-Server

對事實表上的列有效/從列有效嗎?

  • January 28, 2020

我最近在事實表上遇到了“有效自”和“有效至”列。顯然,這對於維度來說很常見,但我之前沒有在事實表上看到它們,也找不到任何表明它們被廣泛使用的資訊。

表粒度與銀行賬戶交易類似,因此在進行存款或提取金額時會生成一個新事實。包含這些列的原因是需要一致的報告(如果我們今天執行此報告,它必須與一周前相同)以及源系統/數據質量差;使用者可以進入源系統並說“這筆押金實際上只有 10 英鎊,而不是 100 英鎊”。發生這種情況時,會插入第二個事實行並且原始行已過期。

在我看來,應該插入一個新的事實行來反轉原始數據,以維護歷史記錄(在範例中應用 -100 英鎊),並且應該插入更新的事實(+10 英鎊)。感覺就像使用有效的 to/from 列在報告時給使用者帶來了太多的複雜性以及錯誤的風險(總結了活動和過期的事實)。

有沒有人有這方面的經驗,是否有任何專門涵蓋它的參考資料(部落格文章、文章甚至書籍)?

有效性取決於使用者希望如何查看數據。您只是將其視為交易事實。其他類型的事實表包括定期快照和累積快照。如果您想查看有人更正一行以幫助減少錯誤條目的所有時間,則有效日期可能是適當的,因此很明顯交易已更新。這將創建一個有點類似於類型 2 SCD 的事實表。

Kimball Group 有一篇文章直接解決了您的問題

這是 Kimball Group 的設計技巧,其中討論了有效的日期累積 snpashot 事實表。

您可能是正確的,您應該只添加反轉原始行的事務。如果您只需要查看交易並總結它們,這聽起來可能是一個有效的解決方案。這就是我看到的大多數會計數據的工作方式。Kimball 說,有效日期事實表可能有助於快速計算特定時間點的賬戶餘額,尤其是跟踪緩慢變化的餘額。但這是一個相當罕見的情況。我認為您擔心它會令使用者感到困惑也是有道理的。您必須決定是否可以通過教育來克服這一點,以及是否值得在數據中增加分析能力。

在我的數據倉庫經驗中,我不必做這麼多,因為我的大部分事實都是簡單的事務或定期快照。但是我已經為多對多關係創建了幾個有效的過時橋接表。

引用自:https://dba.stackexchange.com/questions/100882