构建事实表以导出SSAS中的度量值
我的目标是建立一个事实表,用于在SSAS中导出度量。我正在建立的衡量标准是“平均就业时间”。该度量将部署在仪表板中,用户将能够选择一个日历周期,并深入到月、周和天 这就是事务数据的外观:构建事实表以导出SSAS中的度量值,ssas,mdx,measure,Ssas,Mdx,Measure,我的目标是建立一个事实表,用于在SSAS中导出度量。我正在建立的衡量标准是“平均就业时间”。该度量将部署在仪表板中,用户将能够选择一个日历周期,并深入到月、周和天 这就是事务数据的外观: DeptID EmployeeID StartDate EndDate -------------------------------------------- 001 123 20100101 20120101 001 124
DeptID EmployeeID StartDate EndDate
--------------------------------------------
001 123 20100101 20120101
001 124 20100505 20130101
我的事实表应该有哪些字段?我应该在哪些字段上进行聚合?平均值怎么样?感谢您提供的任何帮助。每当您设计事实表时,首先要问自己的问题是:
EndDate-StartDate
。明显的维度是部门、员工、日期(开始和结束两个角色扮演维度)
在这种情况下,由于您正在寻找“平均就业时间”作为衡量标准,因此,粒度似乎应该是各个部门的单个员工(员工调动时,您的事务数据可能会在不同的DeptID
下列出相同的EmployeeID
)
您的星型架构将如下所示:
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)
以键
结尾的每一列都是代理键。您感兴趣的事实是EmploymentLengthInDays
,您可以导出一个度量值Avg.Employment Length
,然后使用所有维度的平均值进行聚合
现在,您可以提出以下问题:
- 按部门划分的平均就业时间
- 2011年开始或2010年9月结束的员工平均就业时间
- 给定员工的平均雇佣时间(他/她工作的每个部门)
奖金:您还可以向多维数据集中添加另一个使用同一列的度量值,但它有一个总和聚合器,这可以称为
总就业长度
。在给定的员工中,这将告诉您该员工为公司工作的时间,但在一个部门中,它将告诉您该部门可用的总工时。这只是一个单一事实如何成为多个度量的示例。无论何时设计事实表,首先要问自己的问题是:
EndDate-StartDate
。明显的维度是部门、员工、日期(开始和结束两个角色扮演维度)
在这种情况下,由于您正在寻找“平均就业时间”作为衡量标准,因此,粒度似乎应该是各个部门的单个员工(员工调动时,您的事务数据可能会在不同的DeptID
下列出相同的EmployeeID
)
您的星型架构将如下所示:
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)
以键
结尾的每一列都是代理键。您感兴趣的事实是EmploymentLengthInDays
,您可以导出一个度量值Avg.Employment Length
,然后使用所有维度的平均值进行聚合
现在,您可以提出以下问题:
- 按部门划分的平均就业时间
- 2011年开始或2010年9月结束的员工平均就业时间
- 给定员工的平均雇佣时间(他/她工作的每个部门)
奖金:您还可以向多维数据集中添加另一个使用同一列的度量值,但它有一个总和聚合器,这可以称为
总就业长度
。在给定的员工中,这将告诉您该员工为公司工作的时间,但在一个部门中,它将告诉您该部门可用的总工时。这只是一个单一事实如何成为多重衡量标准的例子。很高兴看到你建议使用Kimball的模型。我要添加的一件事是,对于平均度量值,我将为SSAS中的事实表添加计数度量值(这通常由defualt添加)在“计算”下添加一个计算的度量值,该度量值将EmploymentLengthInDays度量值按计数度量值进行划分,给出立方体任何级别的平均值。很高兴看到您建议使用Kimball的模型。我要添加的一件事是,对于平均度量,我会在SSAS中为事实表添加计数度量(这通常是通过defualt添加的),并在计算中添加一个计算度量,通过计数度量将EmploymentLengthInDays度量与count度量相分离,从而得出多维数据集任何级别的平均值。