重複ルール テーブル
アプリケーションで重複ルールを構成する方法については、管理者ガイド: データを整理するための重複データ検出ルールの設定 を参照してください。
重複データ検出ルールは次のテーブルを使用して定義されます:
- DuplicateRule: システム内の重複データを検出するためには、特定のテーブルの種類に対する 重複データ検出ルール を作成します。 同じテーブルの種類に対して複数の検出ルールを作成できます。 ただし、テーブルの種類ごとに一度に公開できる重複データ検出ルールは最大で 5 つです。
- DuplicateRuleCondition: ルールには、テーブルで表される 1 つ以上の 重複データ検出ルールの条件 を設定できます。 条件は、論理
AND
演算子を使用した場合と同様に結合されます。 重複データ検出ルールでは、ベース テーブルの種類および一致するテーブルの種類を指定します。 重複ルールの条件では、ベース列の名前と一致する列の名前を指定します。 たとえば、取引先企業をベース テーブルとして、また取引先担当者を一致するテーブルとして指定し、双方の姓と住所を比較します。 一致基準は、完全一致、最初の n 文字、最後の n 文字などの演算子で構成されます。
これら 2 つのテーブルは DuplicateRule_DuplicateRuleConditions 関連付けを使用して関連付けられます。
重複データ検出は、既存のレコードの生成されたマッチ コードと、作成した新しい各レコードとを比較することにより機能します。 これらのマッチ コードは、各新しいレコードの作成時に作成されます。 したがって、ちょうど同じ時点で処理される場合は、一つ以上の重複レコードが作成される可能性があります。 作成される重複データ検出に加えて、重複の可能性がある他のレコードをチェックするため、重複データ検出ジョブをスケジュールする必要があります。
重複データ検出ルールはシステム全体で有効になります。 大量データから重複データを検出したり、特定のテーブル レコードの重複データを取得するためには、重複データ検出ジョブを実行する前にこれらのルールを公開する必要があります。 重複データ検出ルールを公開するには、PublishDuplicateRule
メッセージ (PublishDuplicateRule Action または PublishDuplicateRuleRequest) を使用します。 重複ルールは、バックグラウンドで実行される非同期処理として公開されます。
これらのテーブルの以下の書き込み可能な列は、重複データ検出ルールの動作を制御します。
重複ルール
Column | 内容 |
---|---|
BaseEntityName | 重複の可能性を評価するレコードのレコードの種類です。 |
説明設定 | 重複データ検出ルールの説明です。 |
DuplicateRuleId | 重複データ検出ルールを表す一意の識別子です。 |
ExcludeInactiveRecords | 非アクティブなレコードに重複フラグを設定するかどうかを設定します。 メモ: 既定値は false です。 非アクティブなレコードについて、重複データ検出ルールの条件を満たしていても重複と見なさない場合は、この属性を true に設定します。 詳細: 非アクティブ状態 |
IsCaseSensitive | 演算子の大文字と小文字が区別されるかどうかを示します。 |
MatchingEntityName | 重複の可能性があるとして評価されるレコードのレコードの種類です。 |
件名 | 重複データ検出ルールの名前です |
所有者 ID | 重複データ検出ルールを所有するユーザーまたはチームを表す一意識別子です。 |
OwnerIdType | 所有者がユーザーまたはチームであるかどうか。 |
StatusCode | 重複データ検出ルールの状態の理由です。 |
非アクティブ状態
ほとんどのシステム テーブルとすべてのカスタム テーブルには、StateCode
列の選択肢が 2 つあります:
Value
: 0InvariantName
:Active
Value
: 1InvariantName
:Inactive
選択肢のラベルは変更することができますが、InvariantName
の値は変更することができません。
一部のシステム テーブルに、複数のアクティブまたは非アクティブの状態があります。 次の表に、複数のアクティブまたは非アクティブの状態を持つテーブルの例を示します。
StateCode | アクティブな状態 | 非アクティブ状態 |
---|---|---|
Appointment.StateCode | Open 、Scheduled |
Completed 、Canceled |
CampaignActivity.StateCode | Open |
Closed 、Canceled |
CampaignResponse.StateCode | 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 |
Invoice.StateCode | Active |
Closed 、Paid 、Canceled |
KbArticle.StateCode | Draft 、Unapproved 、Published |
なし |
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
の選択肢を確認できます。
テーブルの StateCode
選択肢を取得するには、テーブルの LogicalName
を下記で使用する appointment
に置き換えることにより、以下の Web API クエリを使用することができます。
GET [organization URI]/api/data/v9.0/EntityDefinitions(LogicalName='appointment')/Attributes(LogicalName='statecode')/Microsoft.Dynamics.CRM.StateAttributeMetadata/OptionSet?$select=Options
DuplicateRule 特殊メッセージ
DuplicateRule はユーザーが所有するテーブルであり、通常の作成、取得、更新、割り当て、および削除の操作と、アクセスをコントロールする操作が許可されます。 詳細については、DuplicateRule メッセージ を参照してください。
次の特殊メッセージも使用することができます。
メッセージ | Web API 操作 | SDK アセンブリ |
---|---|---|
CompoundUpdateDuplicateDetectionRule | CompoundUpdateDuplicateDetectionRule Action | CompoundUpdateDuplicateDetectionRuleRequest |
PublishDuplicateRule | PublishDuplicateRule Action | PublishDuplicateRuleRequest |
PublishXml | PublishXml Action | PublishXmlRequest |
UnpublishDuplicateRule | UnpublishDuplicateRule Action | UnpublishDuplicateRuleRequest |
重複ルールの条件
Column | 内容 |
---|---|
BaseAttributeName | 比較の対象となるフィールドです。 |
DuplicateRuleConditionId | 条件を表す一意の識別子です。 |
IgnoreBlankValues | 空白の値を重複していない値と見なすかどうかを設定します。 メモ: この列の既定値は false です。 重複データ検出ルールで null 値を一致と見なさない場合は、この属性を true に設定します。 重要: 1 つの条件を持つ重複データ検出ルールの場合、列の値を false に設定すると、システムによって true 値として処理されます。 |
MatchingAttributeName | 基本フィールドと比較されるフィールドです。 |
OperatorCode | このルール条件の演算子です。 重要: OperatorCode 列を ExactMatch に設定する場合、OperatorParam 列に値を設定しないでください |
OperatorParam | 演算子が "最初の文字が同じ" または "最後の文字が同じ" である場合の N のパラメーター値です。 重要: 作成または更新オペレーション中は、 OperatorParam をゼロに設定しないでください。 |
RegardingObjectId | 条件が関連付けられているオブジェクトを表す一意の識別子です。 |
DuplicateRuleCondition 特殊メッセージ
DuplicateRuleCondition は DuplicateRule
の子テーブルです。 これらのテーブルを取得または変更するためのアクセスは、関連付けられている DuplicateRule
に対するアクセスに依存します。 詳細については、DuplicateRuleCondition メッセージ を参照してください。
次の特殊メッセージも使用することができます。
メッセージ | Web API 操作 | SDK アセンブリ |
---|---|---|
CompoundUpdateDuplicateDetectionRule | CompoundUpdateDuplicateDetectionRule Action | CompoundUpdateDuplicateDetectionRuleRequest |
参照
duplicaterule EntityType
duplicaterulecondition EntityType
コードを使用した重複データの検出
重複データ検出の有効化と無効化
重複データ検出を実行する
重複データ検出のメッセージ
サンプル: 重複データ検出を有効にし、重複を取得する
サンプル: レコードの作成および更新時の重複データ検出の使用
サンプル: 複数の重複レコードを検出する
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。