事实表设计 - 如何捕获数据开始日期之前的事实

时间:2017-02-14 10:21:14

标签: data-warehouse dimensional-modeling fact-table

我们有一个事实表,收集详细说明员工何时选择福利的信息。我们试图解决的问题是如何计算所有员工选择的总收益。

我们确实有一个BenefitSelectedOnDay标志,通常我们可以对此进行SUM以获得结果,但这仅适用于我们开始加载数据后的选项。

例如:

  • 假设客户#1自2016年10月以来一直使用我们的分析工具。我们在平台上有4个月的数据。
  • 在10月份加载数据时,福利源数据将显示:
    1. 员工#1于2016年4月4日选择了一项福利。
    2. 员工#2于2016年10月3日选择了福利

为员工#2设置BenefitSelectedOnDay标志非常简单。

问题是如何处理Employee#1,因为我们无法在事实表中该客户端不存在的那一天设置标志。客户#1的数据将于2016年10月1日开始。

在某些情况下,计算福利选择是有问题的。如果我们按日期过滤报告并仅查看2016年第四季度的福利选择,我们就没有问题。但是,如果我们想要总收益选择计数,我们就会遇到问题,因为我们没有为员工#1设置一个标志,因为选择日期先于客户#1的数据集范围(2016年10月1日 - 2017年1月31日)。

1 个答案:

答案 0 :(得分:0)

您的方案中有两种方法似乎合乎逻辑:

  1. 加载一些历史数据,直至第一个与当前报告相关的福利选择日期。虽然可能需要一些工作和额外的空间,但如果员工根据福利的有效期限获得不同的福利,这可能是您唯一的解决方案。

  2. 在加入日期之前的一天(本例中为9月30日)添加记录,并标记在该日期之前选择的客户加入日期(10月1日)之前选择并处于活动状态的所有权益。它们将超出10月报告窗口,但计入无限查询。如果利益是二元开/关的东西,这应该可以正常工作。

  3. 就个人而言,我会选择选项1,除非存储要求是荒谬的。即使这样,您也只能将标记的记录加载到事实表中。如果客户能够在加入日期之前选择一段时间并获得损坏的数据,您的客户可能会感到困惑,但您可以解释/证明这一点。