【问题标题】:Storing Historical Data in Separate Fact Tables将历史数据存储在单独的事实表中
【发布时间】:2014-07-08 21:21:54
【问题描述】:

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

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

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

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

感谢您提供的任何帮助!

【问题讨论】:

    标签: mysql data-warehouse fact-table


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 2012-02-10
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多