使用自定义日期范围存储重叠日期范围

问题描述:

我需要关于如何在我的数据仓库中构建重叠日期范围的帮助。我的目标是以允许日期级别过滤报表的方式对数据建模。使用自定义日期范围存储重叠日期范围

我的尺寸 - DimEmployeeDimDate和一个叫FactAttendance事实。在这一事实的记录被存储如下 -

Fact Attendance

以图形方式表示这一点 -

Leave Management System

报告需要出这个数据的创建,将允许最终用户通过选择日期范围来过滤它。假设用户选择日期范围D1到D20。在进行此选择时,用户应该看到值多少天至少有一名员工离开。在这个特定的例子中,我应该看到底部增加了浅蓝色的部分,即11天。

我正在考虑的方法是每个员工每个日期为每个叶子存储一行。这种方法唯一的问题是,它会成倍增加事实表中的记录数。此外,事实上还有其他栏目会有冗余数据。

这样的重叠日期/时间问题在仓库中通常如何处理?有没有更好的方式,不涉及插入多行?

考虑造型的事实是这样的:

fact_attendance (date_id,employee_id,hours,...) 

这将使你通过简单的日期维度筛选回答你原来的问题,但你也将能够处理像假信用问题,和分数休假日使用。

是的,它可能使用比第一个建议更多的存储空间,但它是一个更好的尺寸表示,并且将满足更多(潜在)的要求。

如果你真的担心存储 - 可能不是真正的担心 - 使用列压缩的DBMS,你会看到大量的磁盘节省。

我说“不是真正担心”存储的原因是您的储蓄在当今的存储世界中毫无意义。 1000名员工每年离开20天,超过5年将意味着总共100,000行。您的DBMS可能会执行RAM中的整个星形连接。即使是一百万名员工,在压缩之前也需要不到一兆兆字节。

+0

是的,这是我正在考虑的方法。但是,事实表中还有其他字段主要是与假期相关的度量标准,如果我将粒度增加到日期级别,则每个日期都会重复。这将产生处理措施中重复值的开销。 –

+0

您能给出一个需要重复的假期相关度量示例吗?这将有助于确定候选解决方案。 –

+0

那么,必须重复的一些指标是* IsPreApproved *和* IsLeaveWithoutPay *,而其他一些适合具有日期粒度的表格如* IsCasualLeave *,* IsSickLeave *等 –