2014-02-17 17 views
0

我有一個數據倉庫,它使用內部代理鍵和類型2緩慢變化的維度。 在清算我們只是從ERP系統的業務鍵,這樣的:用代理鍵(和SCD)導入DWH

Image of Clearing, sorry don't have enough reputation to post it directly or more than two links

在數據倉庫中,我們要使用的代理鍵代替(注:文中的價格從$ 500到改變1000 $和文章在可能的情況下使用代理鍵,這裏僅適用於製造商)。

Image of Data Warehouse

如果我們只是用業務鍵是沒有問題的,只是比較,更新舊的條目,插入新的條目。 但用代理鍵做到這一點的最好方法是什麼?

從清算中的數據倉庫獲取現有的ID(尚未存在的0或-1),然後比較條目?

enter image description here

保持在數據倉庫中的業務鍵藏漢,然後對它們進行比較和更新ID在數據倉庫?

i.pictr.com/3kqn6wb9ou.png

+1

不清楚你的要求是什麼。如果您想要將數據從源清除加載到dwh - 您必須生成代理鍵 - 爲此,您還可以將源系統主鍵與代理鍵一起保存在dwh表中。並在加載時根據源/自然鍵在dwh表中查找數據,並且如果記錄存在,則比較要跟蹤值的更改和更改值的列,則更新現有行的validuntil並插入帶有新的validfrom的新行.. – garpitmzn

+0

所以,你的意思是最好的做法是保持數據倉庫中的商業密鑰,如上一個[截圖](http://i.pictr.com/3kqn6wb9ou.png)? –

+1

是的,保持dwh中的源業務密鑰是有意義的 – garpitmzn

回答

0

能夠裝載表時做查詢 - 參照製造商時同時加載的文章只是想,你必須存儲在DWH自然/業務鍵。根據我的經驗,這總是完成。

但是,您應該只將源實體的業務密鑰存儲在目標實體中。讓我澄清,製造商的商業密鑰應該只出現在您的DWH製造商表格中,而不是其他地方。當您需要參考不同表格中的製造商時,例如文章,您使用製造商的代理鍵。

所以,你在第二個屏幕截圖中弄明白了。

然後,當您加載文章列表並且您需要知道製造商是否針對特定文章進行了更改時,您首先根據其商業關鍵字查找製造商的代理關鍵字,並將代理關鍵字與文章列表中的關鍵字進行比較。這是通常的做法。