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

时间:2014-05-20 14:35:27

标签: mysql data-warehouse fact-table

我是数据仓库项目的新手,想在这里寻求社区的建议。

我需要创建一个数据仓库,从中可以以最有效/最便宜的方式提取历史和当前信息。在这个特定的例子中,我们正在处理网站用户和偏好。

我们有一个Users表,一个名为Preferences的属性表(具有首选项和ID的名称),然后是一个名为User_Preferences的连接事实表。而不是在User_Preferences表中存储所有历史和首选项更改/删除/添加(可能是数百万行),如果有2个表,一个用于当前首选项,一个用于所有首选项历史记录(使用isCurrent flag)?在ETL过程中,我们将所有来自prod db的历史数据加载到一个dw表中,然后只将那些在新dw表中带有isCurrent = 1的记录插入另一个仅存储当前首选项的dw表中。

从商业角度来看,大多数查询都会在当前数据上运行,因为客户只关心用户当前的偏好。少得多的查询需要返回有关用户对业务内部利益的偏好的完整历史信息。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

是的,这很有道理。我将使用CurrentPreference事实表,正如您所描述的那样,以及TransactionalPreference,它报告所有优先级的变化。从该表中,您可以轻松获取用户的历史记录。

交易性F.T. (维度是时间,交易,用户,偏好)具有所有信息,但很难查询过去的情况(德州人去年在januar的偏好是什么?)因此也可能对快照偏好有用,这是一个事实表包含某个时间点的情况(每个月或每天,这取决于您的用户希望)。