在我的數據倉庫中,我有以下維度來創建父子層次結構。我的問題是這樣的。主鍵是OfficerPeopleID,它不是父或子。父母是MgrPeopleID,孩子是PeopleID。
如果我在創建維度到PeopleID時更改默認鍵,它看起來好像會起作用,但是由於它看到多個PeopleID副本,因此在處理時遇到錯誤。存在倍數的原因是因爲它是SCD類型2和主鍵,(OfficerPeopleID)是表的替代鍵。我知道我不是唯一一個試圖在主鍵以外的字段上創建父子引用的人嗎? 謝謝!在SSAS中創建父子引用的問題
1
A
回答
1
我不認爲你會想這樣做。如果我理解正確,PeopleID是您的自然鍵或您的源系統鍵,並且OfficerPeopleID是您的DW代理鍵。在這種情況下,您需要有一個存儲父代理鍵而不是父代自然鍵的列。換句話說,你應該能夠爲表格自己創建一個外鍵。根據您現在的情況,您可以爲經理提供多個記錄,這會使其不清楚哪個記錄是正確的。而且,爲了讓父母爲你工作,孩子必須成爲餐桌的關鍵。
如果你想正確地做到這一點,你應該在你的ETL過程中填充MgrOfficerPoepleID(新列)。如果您打算這麼做,請確保在由於SCD2而有新行時更新管理器密鑰值。但是,如果你還希望做它作爲SSAS DSV命名查詢,你可以做這樣的事情
SELECT
OffcerPeopleID,
-- ... insert other columns here
PeopleID,
MgrPeopleID,
(SELECT OfficerPeopleID
FROM dbo.Employee
WHERE(e.MgrPeopleID = PeopleID) AND (IsCurrent = 1)) AS MgrOfficerPoepleID
FROM dbo.OfficerPeopleDim AS e
WHERE IsCurrent = 1 -- this is your SCD2 flag. you could also use two date range columns
0
你不能這樣做,如果的peopleid包含重複的記錄,無論你把它唯一的或者您創建關係使用這兩個領域。
我也建議你創建的DSV兩個獨立的條目,一個用於管理人員和其他員工,以查詢這樣的:
經理:
select PeopleID as ManagerID, name as Name from OfficerPeopleDim
員工:
select PeopleID as EmployeeID, name, MgrPeopleId as Manager
from OfficerPeopleDim
where MgrPeopleId is not null
所以它會看起來像這樣(左邊)並在右邊產生結果:
+0
我不認爲他可以做到上述。他需要代理鍵(OfficerPeopleID)加入維度。您的圖缺少代理鍵。另外,在你的第二個查詢中,你會錯過管理者本身,這也是員工。他可以簡單地通過爲管理人員添加代理鍵來解決問題,並且這將是真正的外鍵,如下所述。 – 2012-04-27 20:13:39
相關問題
- 1. SSAS多維數據集創建問題 - 父母/子女關係
- 2. SSAS引用的維度問題
- 3. 在Hibernate中創建別名來引用子類問題
- 4. 如何在創建父文檔時自動創建引用的子文檔?
- 5. 問題創建索引
- 6. 用父/子刪除問題
- 7. 創建子域問題
- 8. 創建python子類問題
- 9. 問題與創建罐子
- 10. 在烏爾都語中創建問題的引號(引號)
- 11. XSL父子問題
- 12. 引用從子上下文中父上下文中創建的單例子
- 13. 在卡斯巴問題創建索引
- 14. 在C++中創建父子同胞樹
- 15. 在OpenERP中創建用戶的問題
- 16. 如何在SSAS度量組中創建子分區OLAP
- 17. 在DirectX中創建粒子吸引子
- 18. 子站點創建問題dyamicaly在PHP
- 19. Makefile - 引用父目錄的問題
- 20. 與父子引用的maven依賴關係問題
- 21. 子sProc無法引用在父sProc中創建的本地臨時表
- 22. Cloudformation:ElastiCache SubnetGroup中創建子網的引用
- 23. 創建子時,也創建父項
- 24. 子站點創建問題的動態
- 25. C#,從父引用訪問子屬性?
- 26. 使用引導網格創建表格中的問題
- 27. 德爾福 - 在運行時創建的問題引用對象
- 28. 在python中創建計數器的索引問題
- 29. 在Angular + UI中創建獨立範圍的問題引導
- 30. jQuery功能問題(父/子)
謝謝!我相信對我來說最好的方案就是按照你所說的去做,並且有一個存儲Parent代理鍵的列。如果您對我如何能夠做到這一點有任何建議,我一定會很感激! – John 2012-04-28 02:22:06
我知道我可以進去並通過DSV添加列,我只是不知道如何填充它將與父母代理鍵 – John 2012-04-28 02:25:30
嘿約翰看到上面的變化 – 2012-04-30 18:36:56