有关如何在应用程序中配置重复规则的信息,请参阅管理员指南:设置重复检测规则以保持数据清洁。
使用以下表定义重复检测规则:
- 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.StateCode | Open |
Closed、Canceled |
| 活动响应.状态码 | Open |
Completed、Canceled |
| Contract.StateCode |
Draft、Invoiced、On Hold |
Canceled、Expired |
| ContractDetail.StateCode |
Existing、Renewed |
Canceled、Expired |
| Email.StateCode | Open |
Completed、Canceled |
| Fax.StateCode | Open |
Completed、Canceled |
| Incident.StateCode | Active |
Resolved、Canceled、Closed |
| 发票.StateCode | 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 |
| 服务预约.状态代码 |
Open、Scheduled |
Closed、Canceled |
| Task.StateCode | Open |
Completed、Canceled |
例如,如果将ExcludeInactiveRecords列设置为true,那么只有Active、Submitted和Invoiced销售订单在重复检测期间被考虑用于匹配。
注释
您可通过浏览组织中的表和列定义中所述的元数据浏览器查看表的可用 StateCode 选项。
要获取表的 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 消息。
以下特殊消息同样适用:
| Message | Web API 操作 | SDK 程序集 |
|---|---|---|
| CompoundUpdateDuplicateDetectionRule | CompoundUpdateDuplicateDetectionRule 操作 | CompoundUpdateDuplicateDetectionRuleRequest |
| PublishDuplicateRule | PublishDuplicateRule 操作 | PublishDuplicateRuleRequest |
| PublishXml | PublishXml 操作 | PublishXmlRequest |
| UnpublishDuplicateRule | UnpublishDuplicateRule 操作 | UnpublishDuplicateRuleRequest |
DuplicateRuleCondition
| 列 | Description |
|---|---|
| BaseAttributeName | 正在比较的字段。 |
| DuplicateRuleConditionId | 条件的唯一标识符。 |
| IgnoreBlankValues | 确定是否将空白值视为非重复值。 注意: 此列的默认值为 false. 如果您不希望重复检测规则将null值视为相等,请将其设置为true。 重要提示: 对于具有一个条件的重复检测规则,如果将列值 false设置为,系统会将其视为值 true 。 |
| MatchingAttributeName | 与基础字段进行比较的字段。 |
| OperatorCode | 此规则条件的运算符。 重要提示: 如果将 OperatorCode 列设置为 ExactMatch,请不要将 OperatorParam 列设置为任何值。 |
| OperatorParam | 若运算符为“首字符相同”或“末字符相同”,则参数值为 N。 重要提示: 不要在创建或更新作期间将 OperatorParam 设置为零。 |
| RegardingObjectId | 与条件关联的对象唯一标识符。 |
DuplicateRuleCondition 特殊消息
DuplicateRuleCondition 是 DuplicateRule 的一个子表。 检索或修改这些表的访问权限取决于对与之关联的表的访问权限 DuplicateRule 。 更多信息:DuplicateRuleCondition 消息。
以下特殊消息同样适用:
| Message | Web API 操作 | SDK 程序集 |
|---|---|---|
| CompoundUpdateDuplicateDetectionRule | CompoundUpdateDuplicateDetectionRule 操作 | CompoundUpdateDuplicateDetectionRuleRequest |
另请参阅
duplicaterule EntityType
duplicaterulecondition EntityType
使用代码检测重复数据
启用和禁用重复检测
运行重复检测
重复检测消息
示例:启用重复项检测并检索重复项
示例:创建和更新记录时使用重复检测
示例:检测多个重复记录