不同类型报告的数据仓库设计

datawarehouse design for different types of reports

我是一名 SQL 开发人员,但我是 BI 和 DW 流程的新手。被交给了我设计一个BI流程的任务(交给我这个任务的人可能不明白一个好的DW的重要性)。我们没有完成任何类型的 DW。相反,我们的数据库中有很多缓存表。

让我发疯的是,获取一份报告所需的变更跟踪的过程与聚合其他数据点的过程完全不同。

我们还有一种针对每个项目的工作流程。已售出、进行中、已完成、已开具发票,我必须出示此演变的报告,例如:每周有多少 "In Progress"、"Completed"。

一份报告必须显示:

Week|Project   |Cost
1   |P1        |10
1   |P2        |20
2   |P1        |+2
2   |P2        |-1

对于这份报告的数据,我不能仅仅汇总数据来生成月度报告,因为我每周都会重复相同的项目。当我想获取公司的Monthy情况时,我需要在我的数据中只有一次项目。

报告示例:

我的问题是: 设计这个的最佳方法是什么?我应该设计许多 DW,每个 DW 用于不同的目的吗?

回答你唯一的实际问题:

Should I design many DWs, each one for different purposes?

你应该只设计一个DW。

该 DW 可能针对您的不同用途包含不同的表。在 DW 中,如果出于不同目的需要对多个表进行不同的聚合,那么多个表可以有冗余数据。

数据仓库是维度、事实 table 和数据集市的集合。您将拥有一个数据仓库,并且可能在一个数据仓库中有多个维度和事实 table,具体取决于您的要求。至于每周和每月的进度,您应该需要将您的时间维度结构化以显示这一点。时间维度可用于计算每周和每月的总计,并显示值在时间段内的变化。

根据您问题中给出的详细信息,您至少需要部门、项目和时间维度才能满足您的要求。

要显示项目工作流程的演变,您可能有一个单独的事实 table,其中包含项目代码、项目状态和项目状态更改日期。