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

时间:2013-01-15 21:19:58

标签: ssas mdx measure

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

这是交易数据的样子:

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

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

1 个答案:

答案 0 :(得分:5)

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

  1. 您正在分析的业务流程是什么?
  2. 什么是相关事实?
  3. 您希望通过以下方式分析事实的维度是什么?
  4. 事实表中最低(最少聚合)的详细程度表示什么,即事实表的 grain 是什么?
  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,然后使用所有维度的平均值进行汇总。

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

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

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