2013-01-15 57 views
0

我的目標是構建一個事實數據表,用於推導SSAS中的度量值。我正在制定的措施是「平均就業時間」。度量將部署在儀表板中,用戶將能夠選擇日曆時間段並深入到月,周和日。構建一個事實表以推導SSAS中的度量值

這就是交易數據的樣子:

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

應我的事實表有哪些領域?我應該在哪些領域進行聚合?如何平均它?任何形式的幫助表示讚賞。

回答

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) 

,在Key結束每一列是一個代理鍵。您感興趣的事實是EmploymentLengthInDays,您可以推導出一個度量Avg. Employment Length,並且您將使用所有維度上的平均值進行彙總。按部門

  • 平均就業長度:現在

    你可以問這樣的問題。

  • 從2011年開始或到2010年9月結束的員工的平均就業人數。
  • 給定員工(他/她工作的每個部門之間)的平均就業人數。

BONUS:您還可以添加其他措施,以多維數據集使用同一列,而是有一個SUM聚合,這可以被稱爲Total Employment Length。在給定的員工中,這會告訴你員工爲公司工作了多長時間,但是在一個部門中,它會告訴你該部門可用的總人工天數。只是一個例子,說明一個事實如何能夠成爲多重措施。

+3

很高興看到你建議Kimball的模型。我要添加的一件事是平均度量,我會爲SSAS中的事實數據表添加一個計數度量(這通常會被添加爲defualt),並在Calculations上添加一個計算度量,該度量將EmploymentLengthInDays度量通過計數度量賦予你是立方體任何級別的平均值。 –

相關問題