共用方式為


重複的規則表格

有關如何在應用程式中設定重複規則的資訊,請參閱管理員指南:設定重複偵測規則以維護資料整潔

重複偵測規則是使用下表來定義的:

  • DuplicateRule:若要偵測系統中的重複項,請為特定表格類型建立 重複偵測規則 。 您可以為同一個資料表類型建立多個偵測規則。 不過,一次針對每個資料表類型最多發行五個重複偵測規則。
  • DuplicateRuleCondition:規則可以有一或多個 重複的偵測規則條件 ,這些條件由資料表表示。 條件由系統組合,如同邏輯 AND 運算。 重複偵測規則會指定基底資料表類型和相符的資料表類型。 重複規則條件會指定基本資料行的名稱及相符資料行的名稱。 例如,將客戶指定為基底資料表,將聯絡人指定為比對資料表,以比較姓氏和地址。 匹配準則包括完全匹配、前 n 個字元或後 n 個字元等運算子。

這兩個資料表會使用 DuplicateRule_DuplicateRuleConditions 關係進行關聯。

重複資料偵測的運作方式,是將現有記錄產生的符合代碼與建立的每一筆新記錄比較。 這些符合代碼會在每一筆新記錄建立時建立。 因此,如果多筆記錄在完全相同的時刻處理,可能會建立一筆或多筆重複記錄。 除了在建立時偵測重複記錄外,您還應排程重複偵測工作以檢查其他潛在重複記錄。

重複偵測規則是系統範圍的。 您必須先發佈它們,才能執行重複偵測工作,以偵測大量資料的重複項,或擷取特定資料表記錄的重複項。 若要發佈重複偵測規則,請使用 PublishDuplicateRule 訊息 (PublishDuplicateRule 動作PublishDuplicateRuleRequest)。 重複規則發佈為背景執行的非同步操作。

這些資料表中的下列可寫資料行可控制重複偵測規則的行為。

DuplicateRule

資料行 Description
BaseEntityName 正在評估為潛在重複的記錄類型。
說明 重複偵測規則的描述。
DuplicateRuleId 重複偵測規則的唯一識別碼。
ExcludeInactiveRecords 決定是否將非啟用記錄標記為重複記錄。
附註
預設值是 false。 如果您不想將非作用中記錄標示為重複項目,即使它們符合重複偵測規則條件,也可以將其設定為 true
更多資訊:非啟用狀態
IsCaseSensitive 表示運算子是否區分大小寫。
MatchingEntityName 正在評估為潛在重複的記錄類型。
名稱 重複偵測規則的名稱。
OwnerId 擁有此重複偵測規則的使用者或團隊的唯一識別碼。
OwnerIdType 擁有者是使用者或團隊。
StatusCode 重複偵測規則的狀態原因。

非啟用狀態

大部分的系統資料表和所有自訂資料表都有兩個 StateCode 資料行選項:

  • Value: 0 InvariantName: Active
  • Value: 1 InvariantName: Inactive

選擇的標籤可能會變更,但 InvariantName 值不會變更。

部分系統表格具有多個作用中或非作用中狀態。 下表列出具有多個作用中或非作用中狀態的資料表範例。

StateCode 啟用狀態 非啟用狀態
Appointment.StateCode OpenScheduled CompletedCanceled
CampaignActivity.狀態代碼 Open ClosedCanceled
CampaignResponse.狀態代碼 Open CompletedCanceled
合約.狀態代碼 DraftInvoicedOn Hold CanceledExpired
合約詳細資料.狀態代碼 ExistingRenewed CanceledExpired
Email.StateCode Open CompletedCanceled
Fax.StateCode Open CompletedCanceled
Incident.StateCode Active ResolvedCanceledClosed
發票.狀態代碼 Active ClosedPaidCanceled
KbArticle.StateCode DraftUnapprovedPublished N/A
Lead.StateCode Open QualifiedDisqualified
Letter.StateCode Open CompletedCanceled
Opportunity.StateCode Open WonLost
PhoneCall.StateCode Open CompletedCanceled
Quote.StateCode DraftActive WonClosed
SalesOrder.StateCode ActiveSubmittedInvoiced CanceledFulfilled
ServiceAppointment.StateCode OpenScheduled ClosedCanceled
Task.StateCode Open CompletedCanceled

例如,如果您將 ExcludeInactiveRecords 欄位設為 true,則在重複偵測期間,僅會考慮啟用 ActiveSubmittedInvoiced 的銷售訂單以進行匹配。

備註

您可以使用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 特殊訊息

DuplicateRuleConditionDuplicateRule 的子表。 擷取或修改這些資料表的權限取決於與其關聯的DuplicateRule的存取權。 更多資訊:DuplicateRuleCondition Messages

下列特殊訊息也可以使用:

Message Web API 作業 SDK 組件
CompoundUpdateDuplicateDetectionRule CompoundUpdateDuplicateDetectionRule Action CompoundUpdateDuplicateDetectionRuleRequest

另請參閱

duplicaterule EntityType
duplicaterulecondition EntityType
使用程式碼偵測重複資料
啟用和禁用重複檢測
執行重複偵測
重複偵測訊息
範例:啟用重複偵測並擷取重複記錄
範例:建立和更新記錄時使用重複資料偵測
範例:偵測多筆重複記錄