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

Data warehouse 事实表设计-如何捕获数据开始日期之前的事实,data-warehouse,dimensional-modeling,fact-table,Data Warehouse,Dimensional Modeling,Fact Table,我们有一个事实表,收集员工选择福利时的详细信息。我们试图解决的问题是如何计算所有员工选择的总福利 我们确实有一个BenefitSelectedEnday标志,通常,我们可以对此进行求和以获得结果,但这只适用于自开始加载数据以来的福利选择 例如: 假设客户1自2016年10月以来一直在使用我们的分析工具。我们在平台上有4个月的数据 10月份加载数据时,福利来源数据将显示: 员工#1于2016年4月4日选择了福利 员工#2于2016年10月3日选择了福利 为员工2设置BenefitSelect

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

我们确实有一个BenefitSelectedEnday标志,通常,我们可以对此进行求和以获得结果,但这只适用于自开始加载数据以来的福利选择

例如:

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

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


在某些情况下,计算福利选择是有问题的。如果我们按日期筛选报告,只查看2016年第4季度的福利选择,我们没有问题。但是,如果我们想要一个总福利选择计数,我们有一个问题,因为我们没有为员工1设置标志,因为选择日期早于客户1的数据集范围(目前为2016年10月1日至2017年1月31日)。

在您的场景中,两种方法似乎是合理的:

  • 加载一些历史数据,这些数据可以追溯到第一个福利选择日期,该日期仍然与当前报告相关。虽然这可能需要一些工作和额外的空间,但如果员工有资格根据福利有效期享受不同的福利,这可能是您唯一的解决方案

  • 添加加入日期前一天(本例中为9月30日)的记录,并将在客户加入日期(10月1日)之前选择且在该日期有效的所有福利标记为在该日期选择。它们将不在10月份的报告窗口内,但会计入无限查询。如果利益是一个二进制开/关的东西,那么这应该很好


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

    您能告诉我们事实是什么吗?与其试图在事实中找到日期并将其标记出来,不如明确表示员工开始领取福利的日期。也许有两个事实在起作用