モデルの予測結果をカスタム項目に保存する ~Apex API~

  • URLをコピーしました!

CRM Analyticsでモデルを作成するとコード不要でさまざまな場所、方法で
予測結果と改善案を取得することができます。
しかし、場合によってはコードを使用して実現したいこともあるかもしれません。
今回はApex APIを使用して予測結果をカスタム項目に保存する方法を紹介します。

目次

前提条件

モデルの予測結果を取得するためには以下が必要です。

  • モデルを作成し、Salesforceにモデルをリリースしていること
  • モデルをリリースした予測定義のID(予測ID)が必要
  • モデルのリリース時に対応付けたオブジェクトのレコードID

Apex APIを実行する分には、通常必要な有料ライセンスは必要ありません。
※Analytics Studioの利用やモデルの作成には有料ライセンスが必要です。

※この記事ではApex クラスのSalesforce API バージョンが 61.0 の環境を使用しています。

予測定義のID(予測ID)は、モデルマネージャから予測定義を開き、詳細タブで確認できます。

コード例

以下のコード例は公式HELPのコード例を参考に作成しています。
(予測因子や改善については省いています)
Apexで予測を取得する

// Prediction API 入力レコードの初期化
ConnectApi.SmartDataDiscoveryPredictInputRecords predictInput = new ConnectApi.SmartDataDiscoveryPredictInputRecords();

// 予測定義IDの設定(
predictInput.predictionDefinition = '1ORIg000000PAsDOAW'; // 実際にはハードコーディングしないでください

// レコードの設定
predictInput.records = new List<Id>{newRecord.Id};

// 予測に関する設定(上位の予測因子の数、改善の最大数、改善の影響しきい値)
ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings settings = new ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings();
settings.maxMiddleValues = 0; // 上位の予測因子の数 [0-3]
settings.maxPrescriptions = 0; // 応答で返される改善の最大数
settings.prescriptionImpactPercentage = 0; // 改善の影響しきい値
predictInput.settings = settings;

// 予測値の生成
ConnectApi.SmartDataDiscoveryPrediction response = ConnectApi.SmartDataDiscovery.predict(predictInput);
// 予測値の取得
ConnectApi.SmartDataDiscoveryPredictObject prediction = (ConnectApi.SmartDataDiscoveryPredictObject) response.predictions[0];
// 予測値をカスタム項目に代入
newRecord.PredictValue__c = prediction.prediction.total;

取得した予測結果の比較

Apex APIで取得した予測結果と、Einstein 予測コンポーネントの予測結果を比較してみます。

モデルはTrailheadモジュール:Einstein Discovery の基本 で作成した「商談成立/不成立」を
予測するモデルを使用しています。
※以下のEinstein 予測コンポーネントではスコアを比較するために、
 「肯定的/否定的予測の表示ラベル」は設定していません。

正しく予測結果を取得できています。(少数点以下の不要な部分はApex側で加工すればよいでしょう)
Trailheadモジュールの通りスコアではなく、「Predicted to Win」や「Predicted to Lose」という
表示をしたい場合は数式項目を追加で作成するのが簡単でしょう。

考慮事項

Apex APIを使用して予測結果を取得する際の考慮事項の一例です。

  • 一度に 最大 200 件のレコード IDまで受け付けます
  • 1 時間につき 1 ユーザーあたり最大 2,000 回コールできます
  • 1 回のコールで最大 200 件のレコードを処理できます
  • 1 組織につき 1 日 (24 時間) あたり最大 50,000 回コールできます

詳しくは公式HELP:Apexで予測を取得する を参照してください。

まとめ

Apex APIを使用してモデルの予測結果をカスタム項目に保存する方法を紹介しました。
コードで予測結果を操作できるようになると確実にできることは広がりますが、
考慮すべきことも増えてしまいます。
実際に使用する場合には十分な検証を行ってください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次