我正在尝试将scaleR脚本转换为T-SQL(使用external_script执行),以便在SQL Server中进行数据库内R分析。我正在使用的scaleR脚本位于DeepDive Data Science Tutorial on Fraud data by MSDN上。
我的所有数据现在都在SQL Server中(来自教程),我想要做的就是使用rxSummary
scaleR函数(in-database)查询此表以获取摘要。
这是我的尝试:
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.
知道怎么处理这个吗?
我错过了一步吗?
答案 0 :(得分:1)
在您的示例中,R脚本和SQL参数定义之间存在不匹配。 output_data_1_name
参数值指定从R返回到SQL Server的R数据帧的名称。但是在R脚本中没有为summary
分配值。因此,您得到0结果错误。有关说明和示例,请参阅sp_execute_external_script document。
如果您只是尝试将摘要显示为消息,则可以将print(sumOut)
添加到R脚本中。
如果要将数据返回到SQL Server,则需要构建R数据帧并分配给output_1_data
。