我的目标是建立一个事实表,用于在SSAS中推导出度量。我正在建立的措施是“平均就业时间”。该度量将部署在仪表板中,用户可以选择日历期并深入查看月,周和日。
这是交易数据的样子:
DeptID EmployeeID StartDate EndDate
--------------------------------------------
001 123 20100101 20120101
001 124 20100505 20130101
我的Fact Table应该包含哪些字段?我应该在哪些领域进行聚合?如何平均呢?任何形式的帮助都表示赞赏。
答案 0 :(得分:5)
每当你设计一个事实表时,首先要问自己的问题是:
这个过程似乎是人力资源(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)
以Key
结尾的每一列都是代理键。您感兴趣的事实是EmploymentLengthInDays
,您可以导出一个度量Avg. Employment Length
,然后使用所有维度的平均值进行汇总。
现在您可以提出以下问题:
BONUS :您还可以向使用相同列的多维数据集添加另一个度量,但是具有SUM聚合器,可以将其称为Total Employment Length
。在给定的员工中,这将告诉您员工为公司工作了多长时间,但是在整个部门中,它会告诉您该部门可用的总人工日数。只是一个事实如何成为多项措施的例子。