0

我從我得到的數據中獲得了一個複合自然鍵。使用composite_key = ID-PRODUCT_ID-CLIENT_ID-OFFICE_ID,我想在一個代理鍵中轉換這個鍵。例如:composite_key = 55-001-234-01 to surrogate_key = 123;這是正常的情況,有時辦公室代碼可以更改,但我想要將記錄標識爲與surrogate_key = 123相同的Ex:composite_key = 55-001-234-02。我怎樣才能實現這個功能來創建數據倉庫。代理鍵的組合鍵

如何比較從一種提取到另一種提取的組合鍵,並瞭解該字段是否可以被認爲是有效的?

+0

您將有一張表格將自然鍵映射到替代鍵。但是,通常情況下,您只需在數據表中使用自然鍵,並使用唯一約束和代理鍵。 –

+0

好的,但是我怎麼能理解組合鍵例如辦公室的變化是否會導致相同的代理鍵。在這種情況下,如果我認爲這些記錄是相同的,因爲只有辦公室發生了變化,並且從商業角度來看沒有問題。 – odew

+0

您必須編寫一些規則,用戶定義的函數似乎是一個好方法。 –

回答

3

如果具有不同OfficeID的兩個成員應該映射到相同的代理鍵,那麼它意味着OfficeID不是組合鍵的一部分,只是具有類型2(替換行爲)的標準屬性。

如果你的維度不是太大,我建議在你的ETL工具中使用簡單的Slowly Changing Dimension組件。如果您沒有這樣的組件,只需查看該維度中的成員是否存在。如果存在,則應用更新(最終)更改OfficeID,如果不應用插入。

如果您有很大的維度和性能問題,那麼通過計算一組屬性類型2的校驗和可能會有用並提高性能。您的查找應該返回此校驗和並將其與您當前的校驗和進行比較行。如果它們是標識符,則不需要執行更新語句。