有關如何在應用程式中設定重複規則的資訊,請參閱管理員指南:設定重複偵測規則以維護資料整潔。
重複偵測規則是使用下表來定義的:
- DuplicateRule:若要偵測系統中的重複項,請為特定表格類型建立 重複偵測規則 。 您可以為同一個資料表類型建立多個偵測規則。 不過,一次針對每個資料表類型最多發行五個重複偵測規則。
-
DuplicateRuleCondition:規則可以有一或多個 重複的偵測規則條件 ,這些條件由資料表表示。 條件由系統組合,如同邏輯
AND運算。 重複偵測規則會指定基底資料表類型和相符的資料表類型。 重複規則條件會指定基本資料行的名稱及相符資料行的名稱。 例如,將客戶指定為基底資料表,將聯絡人指定為比對資料表,以比較姓氏和地址。 匹配準則包括完全匹配、前 n 個字元或後 n 個字元等運算子。
這兩個資料表會使用 DuplicateRule_DuplicateRuleConditions 關係進行關聯。
重複資料偵測的運作方式,是將現有記錄產生的符合代碼與建立的每一筆新記錄比較。 這些符合代碼會在每一筆新記錄建立時建立。 因此,如果多筆記錄在完全相同的時刻處理,可能會建立一筆或多筆重複記錄。 除了在建立時偵測重複記錄外,您還應排程重複偵測工作以檢查其他潛在重複記錄。
重複偵測規則是系統範圍的。 您必須先發佈它們,才能執行重複偵測工作,以偵測大量資料的重複項,或擷取特定資料表記錄的重複項。 若要發佈重複偵測規則,請使用 PublishDuplicateRule 訊息 (PublishDuplicateRule 動作 或 PublishDuplicateRuleRequest)。 重複規則發佈為背景執行的非同步操作。
這些資料表中的下列可寫資料行可控制重複偵測規則的行為。
DuplicateRule
| 資料行 | Description |
|---|---|
| BaseEntityName | 正在評估為潛在重複的記錄類型。 |
| 說明 | 重複偵測規則的描述。 |
| DuplicateRuleId | 重複偵測規則的唯一識別碼。 |
| ExcludeInactiveRecords | 決定是否將非啟用記錄標記為重複記錄。 附註: 預設值是 false。 如果您不想將非作用中記錄標示為重複項目,即使它們符合重複偵測規則條件,也可以將其設定為 true 。 更多資訊:非啟用狀態 |
| IsCaseSensitive | 表示運算子是否區分大小寫。 |
| MatchingEntityName | 正在評估為潛在重複的記錄類型。 |
| 名稱 | 重複偵測規則的名稱。 |
| OwnerId | 擁有此重複偵測規則的使用者或團隊的唯一識別碼。 |
| OwnerIdType | 擁有者是使用者或團隊。 |
| StatusCode | 重複偵測規則的狀態原因。 |
非啟用狀態
大部分的系統資料表和所有自訂資料表都有兩個 StateCode 資料行選項:
-
Value: 0InvariantName:Active -
Value: 1InvariantName:Inactive
選擇的標籤可能會變更,但 InvariantName 值不會變更。
部分系統表格具有多個作用中或非作用中狀態。 下表列出具有多個作用中或非作用中狀態的資料表範例。
| StateCode | 啟用狀態 | 非啟用狀態 |
|---|---|---|
| Appointment.StateCode |
Open、Scheduled |
Completed、Canceled |
| CampaignActivity.狀態代碼 | Open |
Closed、Canceled |
| CampaignResponse.狀態代碼 | Open |
Completed、Canceled |
| 合約.狀態代碼 |
Draft、Invoiced、On Hold |
Canceled、Expired |
| 合約詳細資料.狀態代碼 |
Existing、Renewed |
Canceled、Expired |
| Email.StateCode | Open |
Completed、Canceled |
| Fax.StateCode | Open |
Completed、Canceled |
| Incident.StateCode | Active |
Resolved、Canceled、Closed |
| 發票.狀態代碼 | Active |
Closed、Paid、Canceled |
| KbArticle.StateCode |
Draft、Unapproved、Published |
N/A |
| Lead.StateCode | Open |
Qualified、Disqualified |
| Letter.StateCode | Open |
Completed、Canceled |
| Opportunity.StateCode | Open |
Won、Lost |
| PhoneCall.StateCode | Open |
Completed、Canceled |
| Quote.StateCode |
Draft、Active |
Won、Closed |
| SalesOrder.StateCode |
Active、Submitted、Invoiced |
Canceled、Fulfilled |
| ServiceAppointment.StateCode |
Open、Scheduled |
Closed、Canceled |
| Task.StateCode | Open |
Completed、Canceled |
例如,如果您將 ExcludeInactiveRecords 欄位設為 true,則在重複偵測期間,僅會考慮啟用 Active、Submitted 和 Invoiced 的銷售訂單以進行匹配。
備註
您可以使用StateCode瀏覽組織的資料表與欄定義中所描述的 Metadata Browser 來檢視資料表可用的 選項。
若要擷取StateCode資料表的選項,您可以使用下列 Web API 查詢,將資料表中的LogicalName替換為下列使用的appointment。
GET [organization URI]/api/data/v9.0/EntityDefinitions(LogicalName='appointment')/Attributes(LogicalName='statecode')/Microsoft.Dynamics.CRM.StateAttributeMetadata/OptionSet?$select=Options
DuplicateRule 特殊訊息
DuplicateRule 是使用者擁有的資料表,允許一般建立、擷取、更新、指派和刪除作業,以及控制存取的作業。 更多資訊:DuplicateRule Messages。
下列特殊訊息也可以使用:
| Message | Web API 作業 | SDK 組件 |
|---|---|---|
| CompoundUpdateDuplicateDetectionRule | CompoundUpdateDuplicateDetectionRule Action | CompoundUpdateDuplicateDetectionRuleRequest |
| PublishDuplicateRule | PublishDuplicateRule Action | PublishDuplicateRuleRequest |
| PublishXml | PublishXml Action | PublishXmlRequest |
| UnpublishDuplicateRule | UnpublishDuplicateRule Action | UnpublishDuplicateRuleRequest |
DuplicateRuleCondition
| 資料行 | Description |
|---|---|
| BaseAttributeName | 正在比較的欄位。 |
| DuplicateRuleConditionId | 條件的唯一識別碼。 |
| IgnoreBlankValues | 決定是否將空白值視為非重複值。 附註: 此直欄的預設值為 false。 如果您不想讓重複偵測規則將值視為true相等,請將其設定為 null 。 Important: 對於具有一個條件的重複偵測規則,如果您將資料行值設定為 false,系統會將其視為值 true 。 |
| MatchingAttributeName | 與基礎欄位比較的欄位。 |
| OperatorCode | 此規則條件的運算子。 Important: 如果您將 OperatorCode 資料行設定為 ExactMatch,請勿將資料行設定 OperatorParam 為任何值 |
| OperatorParam | 如果運算子為「前 n 個字元相同」或「後 n 個字元相同」,則此處填寫 N 的參數值。 Important: 請勿在建立或更新作業期間將 設定 OperatorParam 為零。 |
| RegardingObjectId | 與此條件相關聯物件的唯一識別碼。 |
DuplicateRuleCondition 特殊訊息
DuplicateRuleCondition 是 DuplicateRule 的子表。 擷取或修改這些資料表的權限取決於與其關聯的DuplicateRule的存取權。 更多資訊:DuplicateRuleCondition Messages。
下列特殊訊息也可以使用:
| Message | Web API 作業 | SDK 組件 |
|---|---|---|
| CompoundUpdateDuplicateDetectionRule | CompoundUpdateDuplicateDetectionRule Action | CompoundUpdateDuplicateDetectionRuleRequest |
另請參閱
duplicaterule EntityType
duplicaterulecondition EntityType
使用程式碼偵測重複資料
啟用和禁用重複檢測
執行重複偵測
重複偵測訊息
範例:啟用重複偵測並擷取重複記錄
範例:建立和更新記錄時使用重複資料偵測
範例:偵測多筆重複記錄