我在R中创建了一个模型,发布到SQL Server表中,并通过将其调用到SQL Server来验证模型 . 但是,我没有试图使用该模型来预测新数据 . 这是我的脚本:

DROP PROCEDURE IF EXISTS predict_risk_new_data;
GO

CREATE OR ALTER PROCEDURE predict_risk_new_data (@q nvarchar(max))

AS
BEGIN

    DECLARE @model varchar(30) = 'risk_rxLogit'
    DECLARE @rx_model varbinary(max) = (SELECT model FROM rx_models WHERE model_name = @model);

    EXEC sp_execute_external_script
    @language = N'R'
    ,@script = N'
        require("RevoScaleR");
        input_data = InputDataSet;  
        model <- unserialize(rx_model);
        prediction <- rxPredict(model, input_data, writeModelVars = TRUE);  
        OutputDataSet <- cbind(predictions[1], predictions[2]);'
    ,@input_data_1 = @q
    ,@parallel = 1
    ,@params = N'@rx_model varbinary(max), @r_rowsPerRead int'
    ,@input_data_1_name = N'InputDataSet'
    ,@rx_model = @rx_model
    ,@r_rowsPerRead = 100

    WITH result sets (("Risk_Pred" float, "ZIP" int));

END
GO;

/*

    EXEC predict_risk 'SELECT TOP 100 [ZIP], [Week], [Age], [Risk] FROM dbo.Risk'

*/

这是错误输出:

消息39004,级别16,状态20,行223在执行带有HRESULT 0x80004004的“sp_execute_external_script”期间发生“R”脚本错误 . 消息39019,级别16,状态2,行223发生外部脚本错误:反序列化错误(rx_model):读取错误调用:source - > withVisible - > eval - > eval - > unserialize执行错误 . 检查输出以获取更多信息 . eval中的错误(expr,envir,enclos):执行错误 . 检查输出以获取更多信息 . 调用:source - > withVisible - > eval - > eval - > .Call Execution停止

SQL Server中的R / ML新手,帮助将会受到重视 . 提前致谢 .