我正在尝试将一些工作的R脚本移植到SQL Server . 我有以下R代码:
titanic <- read.csv(titanicUri, header = TRUE)
titanic <- titanic[complete.cases(titanic),]
titanic$AgeGroup <- cut(titanic$Age, c(0,13,100), labels=c("Young","Old"))
我在SQL Server中创建了一个表并导入了数据 . 当我尝试像这样实现'cut'函数时:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
titanic <- InputDataSet;
titanic <- titanic[complete.cases(titanic),];
titanic$AgeGroup <- cut(titanic$Age, c(0,13,100), labels=c("Young","Old"));
titanic <- data.frame(titanic);
OutputDataSet <- titanic;
'
, @input_data_1 = N' SELECT Name FROM Titanic;'
WITH RESULT SETS (([PassengerName] varchar(Max)));
我收到此错误(complete.cases工作正常)
titanic $ Age中的错误:$ operator对于原子向量Msg 39004,Level 16,State 20,Line 11无效在执行带有HRESULT 0x80004004的'sp_execute_external_script'期间发生'R'脚本错误 . 消息39019,级别16,状态1,行11发生外部脚本错误:titanic $ Age:$ operator对原子向量无效调用:source - > withVisible - > eval - > eval - > cut ScaleR中的错误 . 检查输出以获取更多信息 . eval中的错误(expr,envir,enclos):ScaleR中的错误 . 检查输出以获取更多信息 . 调用:source - > withVisible - > eval - > eval - > .Call执行暂停Msg 11536,Level 16,State 1,Line 11 EXECUTE语句失败,因为它的WITH RESULT SETS子句指定了1个结果集,但只有语句在运行时发送了0个结果集 .
提前致谢
1 回答
正如@TimGoodman所述,由于指定了
SELECT
查询,您的输入数据集是一列 . 只需展开列列表即可使用Age:考虑过指定输出数据集 . 见帮助mssqltips.com guide .