Loading
Salesforce now sends email only from verified domains. Read More
CRM Analytics
Table of Contents
Select Filters

          No results
          No results
          Here are some search tips

          Check the spelling of your keywords.
          Use more general search terms.
          Select fewer filters to broaden your search.

          Search all of Salesforce Help
          Get Predictions in Apex

          Get Predictions in Apex

          Use the ConnectApi.SmartDataDiscovery.predict API to get predictions in your Apex code.

          You can programmatically run predictions in Apex using the ConnectApi.SmartDataDiscovery.predict method. There are two types of input:

          • record IDs
          • record IDs plus calculated fields that are not stored in the record

          This function accepts an input of up to 200 record IDs or raw data rows, along with a prediction definition ID. It returns up to 200 predictions of type ConnectApi.SmartDataDiscoveryPrediction.

          Note
          Note Before you use the Apex Predict API, deploy the model you want to use for predictions. For instructions, see Deploy Models.

          For more information about Apex code, see the Apex Developer Guide.

          Permissions Required to View Predictions and Improvements

          To view predictions, improvements, and related details, users must have the View Einstein Discovery Recommendations permission assigned to their Salesforce account. To learn more, see Assign Einstein Discovery Permission Sets to Users.

          API Usage Limits

          • ConnectApi.SmartDataDiscovery.predict can be called up to 2,000 times per user per hour.
          • Each ConnectApi.SmartDataDiscovery.predict can handle up to 200 records in a single call.
          • ConnectApi.SmartDataDiscovery.predict can be called no more 50,000 times per day (24 hours) per org.

          Batch Apex and Callouts for Models Using Supplemental Datasets

          For batch Apex, if you are using a model associated with a supplemental dataset (see Map Model Variables), be sure to follow the requirements for callouts described in Callout Limits and Limitations in the Apex documentation.

          Get Predictions Using the Record ID as Input

          Syntax

          public ConnectApi.SmartDataDiscoveryPrediction ConnectApi.SmartDataDiscovery.predict(ConnectApi.SmartDataDiscoveryPredictInputRecords input)

          SmartDataDiscoveryPredictInputRecords class

          Name Type Description
          predictionDefinition String 18-digit prediction definition Id.
          records List<Id> List of records to be scored. These record Ids must be from the same object type associated with the deployed prediction definition.
          settings ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings Set the number of top predictors, the number of improvements, and the improvement impact threshold to return in the response.

          Get Predictions Using the Record ID and Calculated Fields as Input

          Syntax

          public ConnectApi.SmartDataDiscoveryPrediction ConnectApi.SmartDataDiscovery.predict(SmartDataDiscoveryPredictInputRecordOverrides input)

          SmartDataDiscoveryPredictInputRecordOverrides class

          Name Type Description
          predictionDefinition String 18-digit prediction definition Id.
          rows List<ConnectApi.SmartDataDiscoveryPredictInputRowObject> Ordered List of row details, including the record Id and values for columns that are not mapped from Salesforce to the prediction definition.
          columnNames List<String> Ordered List of column names that are not mapped.
          settings ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings Set the number of top predictors, the number of improvements, and the improvement impact threshold to return in the response.

          ConnectApi.SmartDataDiscoveryPredictInputRowObject class

          Name Type Description
          record String 18-digit Id for the Salesforce record that gets the score. The record Id must match the object type associated with the deployed prediction definition.
          row List<String> Ordered List of the values that accompany the ordered list of columnNames.

          ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings class

          Name Type Description
          maxMiddleValues Integer Maximum number of top predictors (0-3) to return in the response. The terms “top factor” and “top predictor” mean the same thing. Default: 0 (no top predictors returned).
          maxPrescriptions Integer Maximum number of improvements (0-200) to return in the response. The terms “improvement” and “prescription” mean the same thing. Default: -1 (unlimited).
          prescriptionImpactPercentage Integer Improvement impact threshold, specified as a percentage (0 to 100). If set to 20, for example, only improvements that affect the predicted outcome more than 20% are returned. Default: 0.

          Output Classes

          ConnectApi.SmartDataDiscoveryPrediction class

          Name Type Description
          predictions List<ConnectApi.SmartDataDiscoveryPredictObject or List<ConnectApi.SmartDataDiscoveryPredictErrorObject List of predictions or exceptions returned from the predict method.

          ConnectApi.SmartDataDiscoveryPredictObject class

          Name Type Description
          prediction ConnectApi.SmartDataDiscoveryPredict Object containing all the prediction data.
          prescriptions List<ConnectApi.SmartDataDiscoveryPredictCondition>() List of improvements representing suggestions to improve the prediction. This field is blank if no action variables were selected when deploying the prediction.

          ConnectApi.SmartDataDiscoveryPredict class

          Name Type Description
          total double Final prediction value.
          other double Unexplainable portion of the final prediction value.
          baseLine double Baseline from where the prediction started. Basically the average if there were no model.
          middleValues List<ConnectApi.SmartDataDiscoveryPredictCondition>() List of top predictors that contribute to the prediction.
          importWarnings List<Connectapi.SmartDataDiscoveryPredictImportWarnings>() List of warnings associated with the prediction. If there are no warnings, this field returns null.

          ConnectApi.SmartDataDiscoveryPredictCondition class

          Name Type Description
          value double Value that this field / value combination contributes to the final prediction.
          columns List<ConnectApi.SmartDataDiscoveryPredictColumn> Column information.

          ConnectApi.SmartDataDiscoveryPredictColumn class

          Name Type Description
          columnName String Name of the column. Example: Account Name
          columnValue String Value of the column. Example: Acme

          Connectapi.SmartDataDiscoveryPredictImportWarnings class

          Name Type Description
          outOfBoundsColumns List<ConnectAPI.SmartDataDiscoveryPredictOutOfBoundsFields> Columns + values that are out of bounds. These values were not used when training the model.
          missingColumns List<String> List of column names that are required to make a prediction but are missing. Perhaps they are null?

          Connectapi.SmartDataDiscoveryPredictOutOfBoundsFields class

          Name Type Description
          columnName String Name of the column that is out of bounds.
          columnValue String Value of the column that is out of bounds, meaning that the model wasn’t trained on this particular value. For example, the model was trained on Type = "Manufacturing" but received a value of "Manufracturing".

          Exceptions

          If there are rows that caused the prediction method to fail, this call returns an exception rather than a prediction.

          ConnectApi.SmartDataDiscoveryPredictErrorObject class

          Name Type Description
          message String Error message.

          Code Example

          This code example is designed for building test cases.

          // Initialize the Prediction API Input Record
          ConnectApi.SmartDataDiscoveryPredictInputRecords predictInput = new ConnectApi.SmartDataDiscoveryPredictInputRecords();
          
          // Set Prediction Definition
          predictInput.predictionDefinition = '1ORB0000000TN1SOAW';
          
          // Set Records
          predictInput.records = new List<Id>{'006B0000004ApAZIA0'};
          
          // Set Settings for Prediction
          ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings settings = new ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings();
          settings.maxMiddleValues = 3;//[0-3] limit of 3
          settings.maxPrescriptions = 3;
          settings.prescriptionImpactPercentage = 20;
          predictInput.settings = settings;
          ////////////////////////////////////////////////////////////////
          
          // Generate Predictions
          ConnectApi.SmartDataDiscoveryPrediction response = ConnectApi.SmartDataDiscovery.predict(predictInput);
          // Get Prediction
          ConnectApi.SmartDataDiscoveryPredictObject prediction = (ConnectApi.SmartDataDiscoveryPredictObject) response.predictions[0];
          // Get Prescriptions (Improvements)
          List<ConnectApi.SmartDataDiscoveryPredictCondition> prescriptions = prediction.prescriptions;
          
          // Iterate over the first prescription
          ConnectApi.SmartDataDiscoveryPredictCondition first_prescription = prescriptions[0];
          Double value = first_prescription.value;
          List<ConnectApi.SmartDataDiscoveryPredictColumn> columns = first_prescription.columns;
          
          // Prescriptions usually have one-column information:
          ConnectApi.SmartDataDiscoveryPredictColumn column_1 = columns[0];
          
          String columnName = column_1.columnName;
          String columnValue = column_1.columnValue;
          String columnInputVal = column_1.inputValue;
          ////////////////////////////////////////////////////////////////
          
          // Get Top Factors (Top Predictors)
          List<ConnectApi.SmartDataDiscoveryPredictCondition> topFactors = prediction.prediction.middleValues;
          // Iterate over the first TopFactor
          ConnectApi.SmartDataDiscoveryPredictCondition first_topFactor = topFactors[0];
          
          Double tf_value = first_topFactor.value;
          List<ConnectApi.SmartDataDiscoveryPredictColumn> tf_columns = first_topFactor.columns;
            
          // Top Factors have multiple Columns, so it is recommended to iterate over the list
          ConnectApi.SmartDataDiscoveryPredictColumn tf_column_1 = tf_columns[0];
          
          String tf_columnName = tf_column_1.columnName;
          String tf_columnValue = tf_column_1.columnValue;
          String tf_columnInputVal = tf_column_1.inputValue;
          ////////////////////////////////////////////////////////////////
          
          // Get Import Warnings
          ConnectApi.SmartDataDiscoveryPredictImportWarnings importWarnings = prediction.prediction.importWarnings;
          
          // System Debug
          System.debug('Total ' + prediction.prediction.total);  
          System.debug('Import Warnings ' +importWarnings);
           
          Loading
          Salesforce Help | Article