我正在尝试将scaleR脚本转换为T-SQL(具有external_script执行),以便在SQL Server中进行数据库内R分析。我正在使用的scaleR脚本在MSDN的有关欺诈数据的DeepDive数据科学教程中。
我的所有数据现在都在SQL Server中(来自本教程),而我要做的就是使用rxSummary
scaleR函数(在数据库中)查询该表以获取摘要。
这是我的尝试:
exec sp_execute_external_script
@language = N'R',
@script = N'
sumOut <- rxSummary(
formula = ~gender + balance + numTrans + numIntlTrans + creditLine,
data = ccFraud
)
',
@input_data_1 = N'select * from [DeepDive].[db_datareader].[ccFraudSmall]',
@input_data_1_name = N'ccFraud',
@output_data_1_name = N'summary'
with result sets ((summary varchar(max) not null));
但这会引发错误:
STDOUT message(s) from external script: Rows Read: 10000, Total Rows Processed: 10000, Total Chunk Time: Less than .001 seconds Computation time: 0.000 seconds. Msg 11536, Level 16, State 1, Line 5 EXECUTE statement failed because its WITH RESULT SETS clause specified 1 result set(s), but the statement only sent 0 result set(s) at run time.
知道如何处理吗?
我错过了一步吗?
在您的示例中,R脚本和SQL参数定义之间不匹配。该output_data_1_name
参数值指定正从r到SQL Server返回将R数据框的名称。但是summary
R脚本中没有赋值。因此,您得到0结果错误。有关说明和示例,请参见sp_execute_external_script文档。
如果您只是试图将摘要显示为消息,则可以将其添加print(sumOut)
到R脚本中。
如果要将数据返回到SQL Server,则需要构建R数据框并将其分配给output_1_data
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句