我们有一个事实表,收集详细说明员工何时选择福利的信息。我们试图解决的问题是如何计算所有员工选择的总收益。
我们确实有一个BenefitSelectedOnDay标志,通常我们可以对此进行SUM以获得结果,但这仅适用于我们开始加载数据后的选项。
例如:
为员工#2设置BenefitSelectedOnDay标志非常简单。
问题是如何处理Employee#1,因为我们无法在事实表中该客户端不存在的那一天设置标志。客户#1的数据将于2016年10月1日开始。
在某些情况下,计算福利选择是有问题的。如果我们按日期过滤报告并仅查看2016年第四季度的福利选择,我们就没有问题。但是,如果我们想要总收益选择计数,我们就会遇到问题,因为我们没有为员工#1设置一个标志,因为选择日期先于客户#1的数据集范围(2016年10月1日 - 2017年1月31日)。
答案 0 :(得分:0)
您的方案中有两种方法似乎合乎逻辑:
加载一些历史数据,直至第一个与当前报告相关的福利选择日期。虽然可能需要一些工作和额外的空间,但如果员工根据福利的有效期限获得不同的福利,这可能是您唯一的解决方案。
在加入日期之前的一天(本例中为9月30日)添加记录,并标记在该日期之前选择的客户加入日期(10月1日)之前选择并处于活动状态的所有权益。它们将超出10月报告窗口,但计入无限查询。如果利益是二元开/关的东西,这应该可以正常工作。
就个人而言,我会选择选项1,除非存储要求是荒谬的。即使这样,您也只能将标记的记录加载到事实表中。如果客户能够在加入日期之前选择一段时间并获得损坏的数据,您的客户可能会感到困惑,但您可以解释/证明这一点。