将历史数据存储在单独的事实表中

收藏

我是一个新手,当谈到数据仓库项目时,我想在这里寻求社区的建议。
我需要创建一个数据仓库,从中可以以最有效/最便宜的方式提取历史和当前信息。在这个特定的例子中,我们处理的是网站用户和偏好。
我们有一个Users表,一个名为Preferences的属性表(名为Preferences和ID),然后是一个名为userpreferences的连接事实表。与其将所有历史记录和首选项更改/删除/添加存储在User_preferences表中(可能是百万行中的100s),不如使用两个表,一个用于当前首选项,另一个具有所有首选项历史记录(使用isCurrent标志)更有意义吗?在ETL过程中,我们将把prod db中的所有历史数据加载到一个dw表中,然后只将新dw表中isCurrent=1的记录插入到另一个仅存储当前首选项的dw表中。
从业务角度来看,大多数查询将在当前数据上运行,因为客户只关心用户当前的偏好。要返回用户对业务内部利益的偏好的完整历史信息,需要的查询数量要少得多。
谢谢你的帮助!


最佳答案:

是的,这是有道理的。如您所述,我将使用CurrentPreference事实表,以及报告所有首选项更改的事务首选项。从这个表可以很容易地得到用户的历史记录。
事务F.T.(维度是时间、事务、用户、偏好)拥有所有信息,但很难查询过去的情况(去年1月德州人的偏好是什么?)因此,快照首选项也很有用,它是一个事实表,包含某个时间点的情况(每月或每天,这取决于用户的意愿)。

回复