Dataverseの重複データの検出について調査する機会があったので、メモ。
Dataverseの機能「重複データの検出」
Dataverseにはデータを登録/編集する際に、「重複したデータが存在しないか」を検出する機能があって、「どんなデータを重複とみなすか?」をルールとして設定することができる。
重複データ検出の有効(無効)の単位
重複データ検出は以下のレベルで有効(無効)化を設定できる。
- 環境
- テーブル
- 特定の操作(追加編集、インポート など)
重複データ検出を試す
実際に重複データの検出ルールの作成と、重複するデータを登録するときにどんなメッセージが表示されるかを確認する。
今回はこの「ねこ」テーブルに置いて、「名前」と「誕生日」が一致するレコードを重複したデータとみなす。
※本番ではメールアドレスなどの「データが一意に定まる」列を条件とするのが推奨
※本番ではメールアドレスなどの「データが一意に定まる」列を条件とするのが推奨
事前準備:重複データ検出の有効化
まずは重複データの検出を有効化する。対象のテーブルがある環境の[設定]を開き、
[重複データ検出の設定]をクリック。
[重複データ検出を有効にする]をオンにして、どの操作のときに検出するか(今回はすべて)をチェックし、[OK]を押す。
最後に「ねこ」テーブルの[プロパティ]から[重複データ検出ルールの適用]をオンにしたら、有効化完了。
重複データ検出ルールの作成
続いて重複のルールの作成。再度環境の設定に戻って[重複データ検出ルール]を押す。
[新規]を押して、
[名前]を適当につけ、[条件]を編集(今回は「名前と日付が一致」)し、[保存]→[公開]でルールの作成は完了。
動作確認
まずは簡易編集から同じレコードを追加してみると、画像のように「すでに同じレコードが存在しているよ」とエラーが出て保存ができない。
続いてフォームから同じレコードの作成を試みると、
画像のように重複レコードを知らせてくれて、[無視して保存]か[キャンセル]を選ぶことができる。
※[無視して保存]を選べば重複データの登録も可能。
ちなみに重複のルールに被らないよう誕生日を1日だけずらせば、問題なく保存ができる。
このように組織でDataverseを使う際に、別のユーザーが取引先などに対して同じレコードを追加してしまうことを防いでくれるので、かなり便利な機能かと。
重複検出のルールはソリューションに入れることも可能
重複検出ルールはソリューションに含めることができて、開発環境で作成したルールを本番環境にインポート、といったこともできるよう。
※インポートした直後は[未公開]状態らしいので、[公開]にする必要あり。
手順はこちら。
ソリューションを使用して重複データ検出ルールを作成および管理する - Power Platform
ソリューションを使用して重複データ検出ルールを作成および管理する方法について説明します。
重複データ検出ジョブ
重複データの検出ルール構築前に登録したデータに対して重複をチェックしたいときや、定期的に重複データをチェックしたいときは、[重複データ検出ジョブ]を使用できる。
環境の設定画面に移動し、[重複データ検出ジョブ]を選択。
[新規]から[次へ]を押して、
対象とするレコード(今回はアクティブなレコード)を選択し、
[開始時間]と(定期的に実行する場合は)[実行間隔]を設定する。
最後に送信を押せばジョブの登録が完了。
実際にジョブが実行されると、
画像のように重複していると思われるレコードを抽出してくれる。
※公式には作成した検出ルールに従って重複をチェックするとは書いてあるが、複数ルールがある場合はどんな動作になるのかは不明(そもそも同じテーブルに対して複数重複ルールを設定することはないと思うけど)
※公式には作成した検出ルールに従って重複をチェックするとは書いてあるが、複数ルールがある場合はどんな動作になるのかは不明(そもそも同じテーブルに対して複数重複ルールを設定することはないと思うけど)
コメント