SCD 類型 2 維度 -> 對於存在此類數據的類型 2 scd,這是正確的佈局嗎?
這是我的佈局的範例圖片。
如您所見,我的 SCD 類型存在(狀態/開始日期/結束日期/業務鍵)。
我的鍵是標識每條記錄的代理鍵。
我的問題是我的層次結構似乎出錯了,這可能是由於佈局不正確。這是我目前的鍵列結構。
等級制度
LineOfBusinessId(鍵列:LineOfBusinessId)(名稱列:LineOfBusinessName)
WorkerDivisionId(鍵列:LineOfBusinessId、WorkerDivisionId)(名稱列:WorkerDivisionName)
WorkerId(鍵列:LineOfBusinessId、WorkerDivisionId、WorkerId)(名稱列:WorkerName)
此維度出錯,因為 workername 發生更改,並且當在完整處理期間發生 select distinct 時,它會發現重複項。我只是想知道在這種特定情況下設置鍵列的最佳方法是什麼。名稱是否需要成為鍵列的一部分,或者我的層次結構完全不正確。我確信我已經正確設置了這個,但我現在顯然在質疑自己。
我收到了一些建議,在這種情況下最好的辦法是使用代理鍵作為我的鍵列的一部分,但後來發現這會導致問題,因為我只希望在查詢我的 SCD 時顯示一條記錄。後來,我收到了一些建議,說我不應該在 id 鍵列中使用代理項,而是在 name 鍵列中使用代理項,特別是在 Worker 級別。
我很不喜歡用這種設置更新我的所有立方體,而沒有聽到製作這種類型層次結構的人的聲音。當我看到這個設置時,我不得不認為其他人已經製作了這種類型的層次結構,因為它相當簡單。非常感謝您對此的任何建議/指導。
謝謝。
在緩慢變化的維度上製作 SSAS 層次結構有點麻煩。您需要在層次結構的每個級別為每個歷史版本創建代理鍵。然後密鑰具有使用者選擇或報告的實際業務名稱。
例如,假設在 LineOfBusiness1 中的 Division1 中的工人 BloggsJ。現在 Division1 移動到 LineOfBusiness2。從邏輯上講,您現在擁有包含兩行的 Division 實體:
DivisionKey Division LineOfBusinessKey 1 Division1 11 2 Division2 12 3 Division1 12
和
LineOfBusinessKey LineOfBusiness 11 LineOfBusiness1 12 LineOfBusiness2
現在,我們有工人 BloggsJ,他被分配到 Division 1,隨後被移動
WorkerKey WorkerName DivisionKey Division LineOfBusinessKey LineOfBusiness 101 BloggsJ 1 Division1 11 LineOfBusiness1 102 BloggsJ 3 Division1 12 LineOfBusiness2 103 SmithF 2 Division2 12 LineOfBusiness2
在這種情況下,鍵保持嚴格的分層順序:
- LineOfBusiness2 (Key=12) 有兩個孩子:Division2 (Key=2) 和 Division1 (Key=3)。Division1 (Key=3) 有一個孩子:BloggsJ (Key=102),Division2 (Key=2) 有一個孩子:SmithF (Key=103)。
- LineOfBusiness1 (Key=11) 有一個孩子:Division1 (Key=1),它有一個孩子:BloggsJ (Key=101)
在多維數據集中顯示名稱允許您建構可以支持向下鑽取操作的層次結構。您可能還希望隱藏此層次結構的基本屬性並顯示另一個僅包含名稱的集合,因此維度中的某些內容將在每個級別生成一個乾淨、唯一的成員列表,而不會出現不透明、令人困惑的重複名稱。
*****更新 05012012 下午 3:22 CST
這是我的數據範例的圖像。