Data-Warehouse

在 CRM 和 ERP 中映射產品程式碼

  • December 2, 2018

我正在將數據載入到數據倉庫中。客戶/交易來自 ERP 和 Salesforce。系統之間的產品程式碼不匹配。

有解決這個問題的標準模式嗎?

我試圖小心避免基於意見的大問題/答案。我真的只是在尋找通常如何解決此問題的**事實。**也許就像“在倉庫中放置一些交叉引用表或在您的 ETL 作業中轉換產品程式碼”一樣簡單。但也許倉庫專家可以分享他們的經驗。

是的:您需要的模式是“合成鍵”。對於每個傳入的邏輯產品,您將分配一個鍵,僅在數據倉庫中使用。如果兩個源系統引用相同的產品,您可以為它們提供相同的合成密鑰 (SK)。如果您的源系統對兩個不同的產品使用相同的 ID,您可以為它們分別指定一個不同的密鑰。因此,在您的倉庫中,您有一個乾淨的產品清單。

例如,我目前SyntheticKeys.Products表的架構如下所示:

CREATE TABLE SyntheticKeys.Products
(
SourceSystem    VARCHAR(30) NOT NULL,
ProductID   VARCHAR(30) NOT NULL,
ProductSK   INT NOT NULL IDENTITY (2, 1),
-- Housekeeping
ETLCreated  INT NOT NULL,
ETLModified INT NOT NULL
)

在這種情況下,產品在到達此表之前會進行重複數據刪除,因此我可以使用它來分配合成鍵,但是當記錄被辨識為真正的新產品時IDENTITY,您可能更願意設置一個對象並從中獲取 ID。SEQUENCE

使用合成密鑰的幾個額外好處:

  • 您可以使用 32 位甚至 16 位整數,而不是 144 位 Salesforce ID 或其他寬鍵。這使您的事實表保持狹窄和快速。
  • 您可以為特殊記錄預留空間。我的約定是 SK #-1 表示“不適用”,SK #0 表示“未知”;因此,從未購買過產品的客戶可能有FirstPaidOrderSK-1,而不是NULL,這是模棱兩可的。

這是一個主數據管理 (MDM) 問題。

上一個答案包括這一行:“如果兩個源系統引用相同的產品,您可以給它們相同的合成密鑰 (SK)。” 我當然同意這個想法。但在我看來,這忽略了複雜性的一個重要部分。

建造倉庫的人(你!)並不知道產品之間的所有映射。相反,定義這些映射是具有產品知識的數據管理員的工作。然後,您的工作就是將來自 ERP 的交易和來自 MDM 的產品程式碼映射載入到倉庫中。

然後事務系統可以管理事務。MDM 管理產品主數據(也許還有客戶數據!)。您的 ETL 作業將這兩個都用作倉庫的輸入。倉庫管理使數據可用於報告和分析的任務。

引用自:https://dba.stackexchange.com/questions/223593