Database design 我的累积快照设计是否适合我的DW和我的需要

Database design 我的累积快照设计是否适合我的DW和我的需要,database-design,data-warehouse,snapshot,Database Design,Data Warehouse,Snapshot,我刚刚发现了DW的累积快照设计 我需要记录来自我的bug追踪器的bug信息。bug有一些信息(bug编号、句子…)。它还具有以下地位: 创建, 取消, 影响 决心 一个bug不必经历所有的状态(它可以从创建到取消,或者从创建到受影响到解决…) 这是我的中心事实表 FT_Bug_轨迹 idBug int 布格瓦赫哈尔(100) 创建日期 解决日期 影响日期 取消日期 FKStatus int 状态外键只是链接到一个维度,告诉我当前处于哪个状态(已创建、已取消…) (当然,我还有其他维度,如项目、

我刚刚发现了DW的累积快照设计

我需要记录来自我的bug追踪器的bug信息。bug有一些信息(bug编号、句子…)。它还具有以下地位: 创建, 取消, 影响 决心

一个bug不必经历所有的状态(它可以从创建到取消,或者从创建到受影响到解决…)

这是我的中心事实表

FT_Bug_轨迹


idBug int

布格瓦赫哈尔(100)

创建日期

解决日期

影响日期

取消日期

FKStatus int

状态外键只是链接到一个维度,告诉我当前处于哪个状态(已创建、已取消…)

(当然,我还有其他维度,如项目、客户、Bug类型……)

每次我的bug改变状态时,我都会在需要的地方放置一个新的日期,并将状态更新为当前状态


我的设计是否适合DW和我的系统?

我不知道它是否适合您的情况,这取决于您的需求,即您需要在报告中显示什么。因此,如果您不清楚数据将如何使用以及用户希望从中发现什么,那么在做出任何重大设计决策之前,您应该先了解这些信息

话虽如此,如果某件事情经过(相对而言)定义明确、稳定的一系列步骤,比如制造流程或贷款批准,积累快照效果最好。不幸的是,这种情况很少发生在bug追踪者身上:门票可以重新分配给不同的人,而不改变他们的状态;它们可以重新打开并再次经历整个解决过程;它们可以在“开发中”和“测试中”之间来回“反弹”等等。这意味着您无法提前知道在一张票据的生命周期内需要多少日期和状态(除非您有一个异常简单的流程)

我最近做了一些帮助台报告,并提出了一个使用两个事实表的解决方案。第一个每张票据有一行,仅显示当前状态(新建、已分配、已关闭等),时间戳仅为“已创建”和“上次修改”。第二个事实表中每个票据修改有一行,因此您可以深入查看票据的详细历史记录。这里值得注意的是,对票据的许多常见更改实际上并没有改变状态(例如添加注释),因此您需要确定在您的情况下“修改”是什么:任何更改,还是仅状态更改

ETL流程计算并维护第一个事实表上的记录单级别KPI,如记录单已打开(或已打开)的时间、提交记录单和首次分配记录单之间的时间等。报告用户(如经理)通常对两个特定事件之间的持续时间感兴趣,处理重复的或周期性的过程并不特别容易。出于这个原因,我将尝试使用主(聚合)事实表生成大多数报告,并将第二个主要用于交互式分析,但一切都取决于您希望从数据中获得什么


即使这不能回答您的问题,我希望它能给您一些想法。

我不知道它是否适合您的情况,这取决于您的要求,即您需要在报告中显示什么。因此,如果您不清楚数据将如何使用以及用户希望从中发现什么,那么在做出任何重大设计决策之前,您应该先了解这些信息

话虽如此,如果某件事情经过(相对而言)定义明确、稳定的一系列步骤,比如制造流程或贷款批准,积累快照效果最好。不幸的是,这种情况很少发生在bug追踪者身上:门票可以重新分配给不同的人,而不改变他们的状态;它们可以重新打开并再次经历整个解决过程;它们可以在“开发中”和“测试中”之间来回“反弹”等等。这意味着您无法提前知道在一张票据的生命周期内需要多少日期和状态(除非您有一个异常简单的流程)

我最近做了一些帮助台报告,并提出了一个使用两个事实表的解决方案。第一个每张票据有一行,仅显示当前状态(新建、已分配、已关闭等),时间戳仅为“已创建”和“上次修改”。第二个事实表中每个票据修改有一行,因此您可以深入查看票据的详细历史记录。这里值得注意的是,对票据的许多常见更改实际上并没有改变状态(例如添加注释),因此您需要确定在您的情况下“修改”是什么:任何更改,还是仅状态更改

ETL流程计算并维护第一个事实表上的记录单级别KPI,如记录单已打开(或已打开)的时间、提交记录单和首次分配记录单之间的时间等。报告用户(如经理)通常对两个特定事件之间的持续时间感兴趣,处理重复的或周期性的过程并不特别容易。出于这个原因,我将尝试使用主(聚合)事实表生成大多数报告,并将第二个主要用于交互式分析,但一切都取决于您希望从数据中获得什么


即使这不能回答你的问题,我也希望它能给你一些想法。

好吧,这是一个完整的答案。我承认我不知道用户到底想要什么,所以我必须稍后再回去确认。我所知道的是,主要用途将是检查有多少错误被创建,解决,取消。。。per monthI在考虑我的问题,我认为SCD也可能是一个很好的解决方案,因为我不去尝试