0

我的目标是构建一个事实表,用于在 SSAS 中得出度量。我正在建立的衡量标准是“平均就业年限”。该度量将部署在仪表板中,用户将能够选择一个日历周期并向下钻取到月、周和天。

这是事务数据的样子:

DeptID     EmployeeID   StartDate   EndDate
--------------------------------------------
001        123           20100101   20120101   
001        124           20100505   20130101

我的事实表应该有哪些字段?我应该在哪些字段上进行聚合?怎么平均呢?任何形式的帮助表示赞赏。

4

1 回答 1

5

每当您设计事实表时,首先要问自己的问题是:

  1. 您正在分析的业务流程是什么?
  2. 相关事实是什么?
  3. 您想通过哪些维度来分析事实?
  4. 事实表中最低(最少聚合)的详细程度代表什么,即事实表的粒度是什么?

该过程似乎是人力资源(HR)。

您已经知道工作年限这一事实,您可以轻松计算:EndDate - StartDate. 显而易见的维度是部门、员工、日期(开始和结束的两个角色扮演维度)。

在这种情况下,由于您正在寻找“平均工作年限”作为衡量标准,因此粒度似乎应该是按部门划分的单个员工(当员工转移时,您的交易数据可能会在EmployeeID不同的列表下列出)。DeptID

然后,您的星型模式将如下所示:

Fact_HR
DeptKey   EmployeeKey   StartDateKey   EndDateKey  EmploymentLengthInDays
-------------------------------------------------------------------------
10001     000321         20100101       20120101    730
10001     000421         20100505       20130101    972

Dim_Department
DeptKey   DeptID   Name   ... (other suitable columns)
------------------------- ...
10001     001      Sales  ...

Dim_Employee
EmployeeKey   EmployeeID  FirstName  LastName  ... (other suitable columns)
---------------------------------------------- ...
000321        123         Alison     Smith     ...
000421        124         Anakin     Skywalker ...

Dim_Date
DateKey    DateValue  Year  Quarter Month Day ... (other suitable columns)
00000000   N/A        0     0       0     0   ...
20100101   2010-01-01 2010  1       1     1   ...
20100102   2010-01-02 2010  1       1     2   ...
...        ...              ...     ...   ... ... 
(so on for every date you want to represent)

以结尾的每一列Key都是代理键。您感兴趣的事实是EmploymentLengthInDays,您可以得出一个度量值Avg. Employment Length,并使用所有维度的平均值进行聚合。

现在您可以提出以下问题:

  • 按部门划分的平均就业时间。
  • 从 2011 年开始或到 2010 年 9 月结束的员工的平均就业年限。
  • 给定员工的平均就业时间(跨他/她工作的每个部门)。

奖励:您还可以向使用同一列的多维数据集添加另一个度量,但有一个 SUM 聚合器,这可能被称为Total Employment Length. 对于给定的员工,这将告诉您该员工为公司工作了多长时间,但在一个部门中,它将告诉您该部门可用的总工日。只是一个单一事实如何变成多个衡量标准的例子。

于 2013-01-16T00:18:43.900 回答