3

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

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

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

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

感谢您的任何帮助,您可以提供!

4

1 回答 1

1

是的,这是有道理的。正如您所描述的,我将使用 CurrentPreference 事实表,以及报告所有偏好变化的 TransactionalPreference。从此表中,您可以轻松获取用户的历史记录。

交易 FT(维度是时间、交易、用户、偏好)包含所有信息,但很难查询过去的情况(去年 1 月德克萨斯人的偏好是什么?)所以快照偏好也可能有用,一个包含某个时间点的情况的事实表(每个月或每天,这取决于您的用户希望)。

于 2014-05-23T13:59:55.700 回答