sp_rxPredict

适用于: SQL Server 2016 (13.x) 及更高版本 - 仅限 Windows

为给定输入生成预测值,该输入由存储在 SQL Server 数据库中的二进制格式的机器学习模型组成。

提供近乎实时的 R 和 Python 机器学习模型评分。 sp_rxPredict 是作为包装提供的存储过程

尽管必须使用 R 或 Python 创建模型,但在目标数据库引擎实例上序列化并存储二进制格式后,即使未安装 R 或 Python 集成,也可以从该数据库引擎实例使用它。 有关详细信息,请参阅 使用 sp_rxPredict 进行实时评分。

语法

sp_rxPredict  ( @model, @input )

参数

model

采用受支持格式的预先训练模型。

input

有效的 SQL 查询

返回值

返回评分列,以及输入数据源中的任何传递列。 如果算法支持生成此类值,则可以返回其他分数列,例如置信区间。

注解

若要启用存储过程的使用,必须在实例上启用 SQLCLR。

注意

启用此选项会产生安全影响。 如果服务器上无法启用 SQLCLR,请使用替代实现,例如 Transact-SQL PREDICT 函数。

用户需要 EXECUTE 对数据库拥有权限。

支持的算法

若要创建和训练模型,请使用 SQL Server 机器学习 Services(R 或 Python)、SQL Server 2016 R ServicesSQL Server 机器学习 Server (独立)(R 或 Python)或 SQL Server 2016 R Server (独立)提供的 R 或 Python 支持的算法之一。

R:RevoScaleR 模型

标有 * 的模型还支持函数的 PREDICT 本机评分。

R:MicrosoftML 模型

R:MicrosoftML 提供的转换

Python:revoscalepy 模型

标有 * 的模型还支持函数的 PREDICT 本机评分。

Python:microsoftml 模型

Python:microsoftml 提供的转换

不支持的模型类型

不支持以下模型类型:

  • 在 RevoScaleR 中使用 rxGlmrxNaiveBayes 算法的模型。
  • R 中的 PMML 模型。
  • 使用其他第三方库创建的模型。
  • 使用转换函数或包含转换的公式(例如 A ~ log(B)的模型不支持实时评分。 若要使用此类型的模型,建议在将数据传递到实时评分前对输入数据执行转换。

实时评分不使用解释器,因此评分步骤中不支持可能需要解释器的任何功能。

示例

DECLARE @model = SELECT @model 
FROM model_table 
WHERE model_name = 'rxLogit trained';

EXEC sp_rxPredict @model = @model,
@inputData = N'SELECT * FROM data';

除了是有效的 SQL 查询之外,@inputData中的输入数据还必须包含与存储模型中的列兼容的列。

sp_rxPredict 仅支持以下 .NET 列类型:double、float、short、ushort、long、ulong 和 string。 可能需要先筛选掉输入数据中不支持的类型,然后再将其用于实时评分。

有关相应的 SQL 类型的信息,请参阅 SQL-CLR 类型映射映射 CLR 参数数据