剛士タグ:データ管理Data.com重複管理spring'152015年2月15日、我々人類は遂に、ビジネスを阻害する憎き重複データを調伏する力を手に入れます。これからはデータを安心して登録・活用できる新しい時代になったのです!こんにちは。大げさな始まり方をしてみました。今回はWinter'15で非公開ベータプログラムとして提供され、いよいよSpring'15から利用可能となる重複管理機能について、ご紹介したいと思います。重複管理機能とは一言で言うならば、重複レコードを検出し、重複結果を管理するための機能です。従来でもオブジェクト内にユニーク項目を作れば、その項目をキーにレコードの一意性を保証できますし、項目自動更新で複数の項目を結合してユニーク項目に自動的にセットすれば、複合キーでの一意性を保証することはできました。これ以上に複雑な条件で重複を検出したいときには、基本的にはトリガを開発する必要がありました。ユニーク項目を使う場合には、重複をブロックすることはできても、重複を認識しつつ許容する、ということができませんでした。重複管理機能では、より高度な重複条件の設定と、重複時の動作を設定で制御できるようになりました。Winter'15のベータプログラムでは希望者が殺到したそうで、ユーザが渇望していた機能がようやく実現されました。見ると、新しいメニューが追加されています。何をもって重複したと判断するか設定するのが一致ルール、重複発生時の動作を設定するのが重複ルールです。内に設定が配置されていますが、Data.comライセンスがなくても利用可能です。リードカスタムオブジェクト商談や商品、個人取引先などは利用できませんので、ご注意ください。ベータプログラムでは利用できなかったカスタムオブジェクトやカスタム項目、異なるオブジェクト間の比較(例えば、リードと取引先責任者を比較するなど)はSpring'15で利用可能になるなど、着実に進化している機能ですので、きっと今後は拡張されると思います。ここではせっかくなので、とあるERP管理パッケージ製品のカスタムオブジェクトを選択しました。一致条件を設定する画面です。[ルール名]と[一意の名前]、一致条件の項目が最低1つは必須項目です。項目として指定できるものカスタム項目も含めて、指定したオブジェクトに含まれる項目が表示されるので、選択しましょう。「完全」と「あいまい:XXXX」の選択肢があります。選択リストの場合は「完全」のみ選択可能です。「完全」は文字通り完全一致の場合に条件成立となります。削除した上で一致を判定しますが、現状ではラテン文字のみ対応していますので、ラテン文字ではない値が入る可能性がある場合には、「完全」を利用してください。空白項目をマッチング比較対象項目が空白同士である場合、マッチとする場合にはここをチェックしましょう項目を設定したら、一致条件を入力して、[保存]をクリックしましょう。この例では、「取引先」と「オーダータイプ」と「顧客オーダー番号」が一致し、「支払方法」か「支払条件」のどちらかが一致、という感じです。これで一致ルールは出来上がりました。利用する前には、有効化を忘れずに行いましょう。有効化が完了すると、メールが届いて通知されます。[新規ルール]でオブジェクトを選択して作成を開始します。g次に重複ルールの詳細を設定しますルールの詳細レコードレベルセキュリティ欄は、そのユーザからは参照できないレコードも重複チェック対象とするかを指定するための選択肢です。[共有ルールを適用]の場合、そのユーザから参照できるレコードの範囲内で重複チェック、[共有ルールをスキップ]の場合は全レコードを対象として重複チェックが行われます。スキップの場合であっても、重複発生時に表示される「重複の可能性のあるレコード」には、参照できないレコードは表示されません。アクション作成時、編集時でそれぞれ、一致ルールにマッチした場合にどうするか設定します。[ブロック]の場合は重複を許容せず、保存や編集を許可しません。重複発生時のメッセージを[アラートテキスト]で指定することができます。一致ルール[比較対象]でどのオブジェクトで一致を見るか指定します。通常は同じオブジェクトですが、例えばリードと取引先責任者で比較を行う、といった場合には別のオブジェクトを指定します。その場合、項目同士のマッピングを行います。[一致ルール]で先ほどの一致ルールを指定します。ここでは1つ指定していますが、複数の一致ルールを指定することも可能です。特定の条件のときにのみ重複チェックを行いたい場合に、条件欄を利用します。ここではオブジェクトの項目とユーザの項目が指定可能です。数式項目や日付項目もここでは指定可能です。ときだけチェックするようにしました。保存を行ったら、こちらも有効化をお忘れなく。これで重複管理の設定は終わりです。動作確認してみましょう。あれれ、、、普通に保存できてしまいますね。ここまで設定したのに(T-T)気を取り直して、取引先責任者で設定しました。動作確認してみましょう。何が原因で重複と判断したのかが赤枠で強調表示され、ブロック時と許可時でボタンが異なりますね。重複が発生したことは、重複レコードセットと重複レコード項目という特別なオブジェクトに記録されています。重複レコードセットというタブが新しく出ていますので、見てみましょう。この重複レコードセットや重複レコード項目は、カスタムレポートタイプを作ってレポートを作成することが出来ます(出せる項目が現状少ないので、ちょっと貧相ですが)またさらには、カスタム項目の追加やトリガを作ることも可能です。利用できそうですね!Apexからの利用Apexから重複管理を活用できるように、いくつかのクラスが追加されています。Database.DMLOptions.DuplicateRuleHeaderDatabase.DuplicateErrorDatacloud.AdditionalInformationMapDatacloud.DuplicateResultDatacloud.FieldDiffDatacloud.MatchRecordDatacloud.MatchResult今回は検証していませんが、一致ルールや一致ルール適用結果、エラーメッセージや重複レコードを取得する、といった使い方ができるようになりそうです。利用上の注意点など最後に、利用上の注意点などをお伝えします。復元ボタンでレコードを作成した場合、重複チェックは動作しませんアラートテキストの翻訳アラートテキストはトランスレーションワークベンチ対応していませんので、多言語環境では要注意です重複データに勝つ!最後までお読みいただき、ありがとうございます。皆様は、重複データに勝つための武器の使い方を習得できました。あとは活用あるのみです。勝利をお祈りいたします。検索クラウドやるならテラスカイ。求む!Salesforce開発エンジニア。