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