构建事实表以获取SSAS中的度量

Thr*_*ian 0 ssas mdx measure

我的目标是建立一个事实表,用于推导SSAS中的度量.我正在建立的措施是"平均就业时间".该度量将部署在仪表板中,用户可以选择日历期并深入查看月,周和日.

这是事务数据的样子:

DeptID     EmployeeID   StartDate   EndDate
--------------------------------------------
001        123           20100101   20120101   
001        124           20100505   20130101
Run Code Online (Sandbox Code Playgroud)

我的Fact Table应该有哪些字段?我应该在哪些领域进行聚合?如何平均呢?任何形式的帮助表示赞赏.

Eze*_*uns 5

无论何时设计事实表,首先要问自己的问题是:

  1. 您正在分析的业务流程是什么?
  2. 什么是相关事实?
  3. 您希望通过以下方式分析事实的维度是什么?
  4. 事实表中最低(最少聚合)的详细程度表示什么,即事实表的粒度是多少?

这个过程似乎是人力资源(HR).

你已经知道了就业的长短,你可以轻松计算:EndDate - StartDate.显而易见的维度是Department,Employee,Date(Start和End的两个角色扮演维度).

在这种情况下,由于您正在寻找"平均就业时长"作为一项衡量标准,因此似乎粮食应该是按部门划分的员工(当员工转移时,您的交易数据可能会以不同的方式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)
Run Code Online (Sandbox Code Playgroud)

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

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

  • 按部门划分的平均就业长度
  • 员工的平均就业时间从2011年开始,或截至2010年9月.
  • 特定员工(他/她所工作的每个部门)的平均工作时间.

奖励:您还可以向使用相同列的多维数据集添加另一个度量,但是具有SUM聚合器,可以调用它Total Employment Length.在给定的员工中,这将告诉您员工为公司工作了多长时间,但是在整个部门中,它会告诉您该部门可用的总人工日数.只是一个事实如何成为多个措施的一个例子.

  • 很高兴看到你建议Kimball的模特.我要添加的一件事是平均度量,我会为SSAS中的事实表添加一个计数度量(这通常由defualt添加),并在计算下添加一个计算度量,其中,根据计数度量给出EmploymentLengthInDays度量值你在立方体任何级别的平均值. (3认同)