在我的数据仓库模型中,我有 Dim_Date 包含日期列表。我有一个事实表 Employee_Leaves,其中包含员工休假的列表。
我的事实表有两个日期 Fk_Leave_Start_Date 和 Fk_Leave_End_Date .
我不知道我这样做是否正确。在我的 Talend Job 中,为了加载事实表,我在数据源中放置了两次相同的日期维度,以检索将放入两个日期的事实中的 ID。它工作正常,即使我开始报告一切都工作正常。
我想知道我是否遵循 Kimball 的最佳实践?因为我看到我的一些同事在做两个单独的日历维度?我不知道我的关系类型是(一对多还是多对多?)
根据 Kimball 方法,决定使用两个单独的日期维度表取决于数据的要求和特征。通常,当存在具有不同属性的不同类型的日期或日期维度内存在多个层次结构时,会创建两个单独的日期维度。
交易日期与报告日期:如果您有一个场景,其中存在代表事件实际发生的交易日期(订单日期、交货日期)和用于报告和报告的报告日期(例如,会计日历日期、会计期间)分析时,为每个维度设置单独的维度可能会很有帮助。这使您能够保持交易时间表的完整性,同时提供报告灵活性。
日历日期与会计日期:许多组织使用的会计日历与标准公历不同。在这种情况下,为日历日期(日、月、年)和会计日期(会计日、会计月、会计年度)设置单独的维度可能会有所帮助,以支持基于会计期间的报告和分析。
多重层次结构:有时,您可能需要使用日期维度内的不同层次结构来分析数据。例如,您可能具有日-月-年、周-月-年和季度年等层次结构。为每个层次结构创建单独的维度可以简化基于不同时间视角的查询和报告。
在您的情况下,正如@Nickw提到的,您需要在事实表和dim_date之间有两个start_date和end_date连接。