T-SQL 为数据库内 R 集成执行外部脚本
T-SQL with external script execution for in-database R integration
我正在尝试将 scaleR 脚本转换为 T-SQL(执行 external_script),以便在 SQL 服务器中进行数据库内 R 分析。我正在使用的 scaleR 脚本在 DeepDive Data Science Tutorial on Fraud data by MSDN 上。
我所有的数据现在都在 SQL 服务器中(来自教程),我想做的就是使用 rxSummary
scaleR 函数(在数据库中)查询此 table 以获取摘要。
这是我的尝试:
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 returned 到 SQL 服务器的 R 数据帧的名称。但是 R 脚本中没有为 summary
赋值。因此,您收到 0 结果错误。有关说明和示例,请参阅 sp_execute_external_script document。
如果您只是想将摘要显示为消息,则可以将 print(sumOut)
添加到 R 脚本。
如果您想 return 数据到 SQL 服务器,您需要构建一个 R 数据帧并分配给 output_1_data
。
我正在尝试将 scaleR 脚本转换为 T-SQL(执行 external_script),以便在 SQL 服务器中进行数据库内 R 分析。我正在使用的 scaleR 脚本在 DeepDive Data Science Tutorial on Fraud data by MSDN 上。
我所有的数据现在都在 SQL 服务器中(来自教程),我想做的就是使用 rxSummary
scaleR 函数(在数据库中)查询此 table 以获取摘要。
这是我的尝试:
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 returned 到 SQL 服务器的 R 数据帧的名称。但是 R 脚本中没有为 summary
赋值。因此,您收到 0 结果错误。有关说明和示例,请参阅 sp_execute_external_script document。
如果您只是想将摘要显示为消息,则可以将 print(sumOut)
添加到 R 脚本。
如果您想 return 数据到 SQL 服务器,您需要构建一个 R 数据帧并分配给 output_1_data
。