0

我的组织需要在 SQL Server 中构建一个数据仓库(最终在 SSAS 中构建一个多维数据集),其中一个事实表用于销售目标/预算数据。

到目前为止,我只处理了与这个问题相反的问题,即孩子的价值总和小于父母价值的总和。

这里的问题是如何对事实表进行建模,其中孩子的价值之和是父母价值的 n 倍之和。

下表表示是我描述问题的最佳方式。

每个员工都有一个销售目标/预算金额,如下所示:

EmployeeId | EmployeeBudgetAmount$
-----------+----------------------
Emp1       |   100
Emp2       |   200
Emp3       |   500

上述员工级别的预算值被拆分为实践(相当于法律实践的组织术语,例如移民、公司等),如下所示:

EmployeeId | PracticeTypeId | PracticeId | EmployeePracticeBudgetAmount$
Emp1 | PracType1 | Prac1 | 20
Emp1 | PracType1 | Prac2 | 80
Emp1 | PracType2 | Prac10 | 40
Emp1 | PracType2 | Prac20 | 60
Emp1 | PracType3 | Prac100 | 30
Emp1 | PracType3 | Prac200 | 70

Emp2 | PracType1 | Prac1 | 160
Emp2 | PracType1 | Prac2 | 40
Emp2 | PracType2 | Prac10 | 80
Emp2 | PracType2 | Prac20 | 120
Emp2 | PracType3 | Prac100 | 140
Emp2 | PracType3 | Prac200 | 60

Emp3 | PracType1 | Prac1 | 0
Emp3 | PracType1 | Prac2 | 500
Emp3 | PracType2 | Prac10 | 100
Emp3 | PracType2 | Prac20 | 400
Emp3 | PracType3 | Prac100 | 200
Emp3 | PracType3 | Prac200 | 300

该员工的每个实践类型的预算都满足该员工的总预算。

Emp1's total budget = SUM(Emp1's practice budget) for PracType1
Emp1's total budget = SUM(Emp1's practice budget) for PracType2
Emp1's total budget = SUM(Emp1's practice budget) for PracType3

...等等。

如果实践预算表(上面的第 2 个表)用于事实表,则汇总员工的所有 EmployeePracticeBudgetAmount 会产生预算金额,即员工预算的 3(可用的实践类型数量)乘以员工的预算。

关于如何将其建模为事实表的任何指针/想法?

提前致谢。

注意:还有其他维度,如会计月份和会计年度,高于员工级别,需要汇总预算金额。为简洁起见,我没有在上述问题中提出这些内容。

4

1 回答 1

0

当您为三种实践类型中的每一种将员工的预算投入三倍时,如果您仅按员工分组/总和,您将(如您所说)获得总数的 3 倍。

如果像第二个表一样创建事实表,预算将是“半累加的”,因为跨实践类型求和是没有意义的。

您可以通过教育用户来处理它(确保人们在构建他们的查询/报告时知道这一点)。对于 SSAS,企业版具有定义半附加测量的能力,您可以通过更多工作(和谷歌搜索)来解决标准版的这个问题。

如果您确实想在没有这种复杂性的情况下汇总员工预算,您可以为此设置一个单独的事实表,但这听起来是可选的。

所以这将是一个员工预算的事实表,一个用于实践预算的事实表,一个用于员工的维度和一个用于实践的维度(包含实践类型)。

于 2017-03-20T08:40:15.547 回答