您在此处:
在 Apex 获取预测
使用ConnectApi.SmartDataDiscovery.predict API 在您的 Apex 代码中获取预测。
您可以使用ConnectApi.SmartDataDiscovery.predict方法在 Apex 中以编程方式运行预测。有两种类型的输入:
- 记录 ID
- 记录 ID 加上没有存储在记录中的计算字段
该函数接受最多 200 个记录 ID 或原始数据行的输入,以及预测定义 ID。它最多返回 200 个 ConnectApi.SmartDataDiscoveryPrediction 类型的预测。
有关 Apex 代码的更多信息,请参阅Apex 开发人员指南。
查看预测和改进所需的权限
要查看预测、改进和相关详细信息,用户必须拥有分配给其 Salesforce 帐户的“查看 Einstein Discovery 推荐”权限。要了解更多信息,请查看向用户分配 Einstein Discovery 权限集。
API 使用限制
- 每个用户每小时最多可以调用 2000 次
ConnectApi.SmartDataDiscovery.predict。 - 一个呼叫中,每个
ConnectApi.SmartDataDiscovery.predict最多可以处理 200 个记录。 - 每个组织每天(24 小时)调用
ConnectApi.SmartDataDiscovery.predict的次数不得超过 50,000 次。
使用记录 ID 作为输入获取预测
语法
public ConnectApi.SmartDataDiscoveryPrediction ConnectApi.SmartDataDiscovery.predict(ConnectApi.SmartDataDiscoveryPredictInputRecords input)SmartDataDiscoveryPredictInputRecords 类
| 名称 | 类型 | 描述 |
|---|---|---|
predictionDefinition
|
字符串 | 18 位预测定义 ID。 |
records
|
列表<Id> | 要评分的记录列表。这些记录 ID 必须来自与部署的预测定义相关联的同一对象类型。 |
settings
|
ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings | 设置在响应中返回的热门预测因素数、改进数和改进影响阈值。 |
使用记录 ID 和计算字段作为输入获取预测
语法
public ConnectApi.SmartDataDiscoveryPrediction ConnectApi.SmartDataDiscovery.predict(SmartDataDiscoveryPredictInputRecordOverrides input)SmartDataDiscoveryPredictInputRecordOverrides 类
| 名称 | 类型 | 描述 |
|---|---|---|
predictionDefinition
|
字符串 | 18 位预测定义 ID。 |
rows
|
列表<ConnectApi.SmartDataDiscoveryPredictInputRowObject> | 行详细信息的有序列表,包括未从 Salesforce 映射到预测定义的记录 ID 和值。 |
columnNames
|
列表<String> | 未映射的列名的有序列表。 |
settings
|
ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings | 设置在响应中返回的热门预测因素数、改进数和改进影响阈值。 |
ConnectApi.SmartDataDiscoveryPredictInputRowObject 类
| 名称 | 类型 | 描述 |
|---|---|---|
record
|
字符串 | 将获取分数的 Salesforce 记录的 18 位数 ID。记录 ID 必须匹配与部署的预测定义相关联的对象类型。 |
row
|
列表<String> | 伴随columnNames有序列表的值的有序列表。 |
ConnectApi.SmartDataDiscoveryDiscoveryPredictSettings 类
| 名称 | 类型 | 描述 |
|---|---|---|
maxMiddleValues
|
整型 | 响应中返回的最大预测数 (0-3)。“热门因素”和“热门预测因素”这两个术语拥有相同的意思。默认值:0(未返回热门预测因素)。 |
maxPrescriptions
|
整型 | 响应中返回的最大改进数 (0-200)。“改进”和“处方”这两个术语的意思相同。默认值:-1(不受限制)。 |
prescriptionImpactPercentage
|
整型 | 指定为百分比的改进影响阈值(0 到 100)。例如,如果设置为 20,则仅返回影响预测结果超过 20% 的改进。默认值:0. |
输出类
ConnectApi.SmartDataDiscoveryPrediction 类
| 名称 | 类型 | 描述 |
|---|---|---|
predictions
|
列表<ConnectApi.SmartDataDiscoveryPredictObject 或列表<ConnectApi.SmartDataDiscoveryPredictErrorObject | 从 predict 方法返回的预测或异常列表。 |
ConnectApi.SmartDataDiscoveryPredictObject 类
| 名称 | 类型 | 描述 |
|---|---|---|
prediction
|
ConnectApi.SmartDataDiscoveryPredict
|
包含所有预测数据的对象。 |
prescriptions
|
列表<ConnectApi.SmartDataDiscoveryPredictCondition>() | 代表改进预测的建议的改进列表。如果在部署预测时没有选择任何操作变量,则此字段为空。 |
ConnectApi.SmartDataDiscoveryPredict 类
| 名称 | 类型 | 描述 |
|---|---|---|
total
|
双 | 最终预测值。 |
other
|
双 | 最终预测值的不可解释部分。 |
baseLine
|
双 | 预测开始的基准值。如果没有模型,这基本上是平均值。 |
middleValues
|
列表<ConnectApi.SmartDataDiscoveryPredictCondition>() | 有助于预测的热门预测因素列表。 |
importWarnings
|
列表<Connectapi.SmartDataDiscoveryPredictImportWarnings>() | 与预测相关联的警告列表。如果没有警告,此字段将返回 null。 |
ConnectApi.SmartDataDiscoveryPredictCondition 类
| 名称 | 类型 | 描述 |
|---|---|---|
value
|
双 | 该字段/值组合有助于最终预测的值。 |
columns
|
列表<ConnectApi.SmartDataDiscoveryPredictColumn> | 列信息。 |
ConnectApi.SmartDataDiscoveryPredictColumn 类
| 名称 | 类型 | 描述 |
|---|---|---|
columnName
|
字符串 | 列的名称。示例:Account Name |
columnValue
|
字符串 | 列的值。示例:Acme |
Connectapi.SmartDataDiscoveryPredictImportWarnings 类
| 名称 | 类型 | 描述 |
|---|---|---|
outOfBoundsColumns
|
列表<ConnectAPI.SmartDataDiscoveryPredictOutOfBoundsFields> | 列 + 超出界限的值。训练模型时不使用这些值。 |
missingColumns
|
列表<String> | 进行预测所需但缺失的列名列表。也许它们是空的? |
Connectapi.SmartDataDiscoveryPredictOutOfBoundsFields 类
| 名称 | 类型 | 描述 |
|---|---|---|
columnName
|
字符串 | 超出界限的列的名称。 |
columnValue
|
字符串 | 超出界限的列的值,这意味着模型没有接受过该特定值的训练。例如,模型在类型 = "Manufacturing" 上训练,但收到的值是 "Manufracturing"。 |
异常
如果存在导致预测方法失败的行,此调用将返回异常而不是预测。
ConnectApi.SmartDataDiscoveryPredictErrorObject 类
| 名称 | 类型 | 描述 |
|---|---|---|
message
|
字符串 | 错误消息。 |
代码示例
该代码示例为构建测试用例而设计。
// 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);
