我是数据仓库项目的新手,并希望在此寻求社区的建议。
我需要创建一个数据仓库,可以以最有效/最便宜的方式从中提取历史和当前信息。在此特定示例中,我们正在处理网站用户和首选项。
我们有一个Users表,一个名为Preferences的属性表(具有首选项的名称和ID)以及一个称为User_Preferences的连接事实表。与其将所有历史记录和首选项的更改/删除/添加存储在User_Preferences表中(可能是亿万行),不如让它具有2个表,一个用于当前首选项和一个具有所有首选项历史记录的表(使用一个isCurrent标志)?在ETL过程中,我们将把prod数据库中的所有历史数据加载到一个dw表中,然后仅将新dw表中具有isCurrent = 1的那些记录插入到另一个仅存储当前首选项的dw表中。
从业务的角度来看,大多数查询将在当前数据上运行,因为客户仅关心用户的当前首选项。少得多的查询将需要返回有关用户对企业内部利益的偏好的完整历史的信息。
感谢您的任何帮助,您可以提供!
是的,这很有道理。正如您所描述的,我将使用CurrentPreference事实表,并使用一个TransactionalPreference来报告所有首选项的更改。从该表中,您可以轻松获取用户的历史记录。
事务性FT(维度是时间,事务,用户,首选项)具有所有信息,但很难查询过去的情况(去年德州人在一月份的偏好是什么?),因此快照首选项也可能有用。事实表,其中包含某个时间点的情况(每个月或每天,这取决于用户的意愿)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句