當你設計一個事實表,第一套問題要問自己的是:
- 什麼是你要分析的業務流程?
- 什麼是相關事實?
- 你想分析事實的維度是什麼?
- 事實表中的細節最低(最低彙總)水平表示什麼,即事實表的穀物是什麼?
該過程似乎是人力資源(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
。在給定的員工中,這會告訴你員工爲公司工作了多長時間,但是在一個部門中,它會告訴你該部門可用的總人工天數。只是一個例子,說明一個事實如何能夠成爲多重措施。
很高興看到你建議Kimball的模型。我要添加的一件事是平均度量,我會爲SSAS中的事實數據表添加一個計數度量(這通常會被添加爲defualt),並在Calculations上添加一個計算度量,該度量將EmploymentLengthInDays度量通過計數度量賦予你是立方體任何級別的平均值。 –