繁体   English   中英

R function 内 SQL 存储过程问题

[英]R function within SQL stored procedure issue

我正在尝试使用 SQL 存储过程设置一个简单的 R function 存储过程,但我无法让它正常工作。

这是我的脚本

CREATE PROCEDURE sp_aggregate (@paramGroup nvarchar(40))
AS

EXECUTE sp_execute_external_script
@language =N'R',
@script=N'

library(dplyr)

data <- data.frame(x = c(1,2,3,4,5,6,7,8,9,10), Country = c("A", "A","A","A","A", 
"B", "B", "B", "B", "B"), Class = c("C", "C", "C", "C", "C", "D", "D", "D", "D", "D"))

agg_function <- function(df, column) {

    enq_column <- enquo(column)

    output <- df %>% group_by(!!enq_column) %>% summarize(total = sum(x))
    return(output)
 }  

 OutputDataSet <- as.data.frame(agg_function(df = data, column = paramgroup_var))

'
  , @input_data_1 = N''
 -- , @input_data_1_name = N'SQL_input' 
  , @output_data_1_name = N'OutputDataSet' 
  , @params = N'@paramgroup_var nvarchar(40)'
  , @paramgroup_var = @paramGroup;
GO

执行 sp_aggregate @paramGroup = Country

这是我遇到的错误:

Error in grouped_df_impl(data, unname(vars), drop) : 
Column `paramgroup_var` is unknown
Calls: source ... group_by.data.frame -> grouped_df -> grouped_df_impl

Error in execution.  Check the output for more information.
Error in eval(ei, envir) : 
Error in execution.  Check the output for more information.
Calls: runScriptFile -> source -> withVisible -> eval -> eval -> .Call
Execution halted

错误是由于在 data.frame() 末尾缺少一个)

CREATE PROCEDURE sp_aggregate (@paramGroup nvarchar(40))
AS

EXECUTE sp_execute_external_script
@language =N'R',
@script=N'
library(dplyr)

data <- data.frame(x = c(1,2,3,4,5,6,7,8,9,10), 
                   Country = c("A", "A","A","A","A", "B", "B", "B", "B", "B"), 
                   Class = c("C", "C", "C", "C", "C", "D", "D", "D", "D", "D"))

agg_function <- function(df, column) {
  enq_column <- enquo(column)
  output <- df %>% group_by(!!enq_column) %>% summarize(total = sum(x))
  return(output)
}  

OutputDataSet <- as.data.frame(agg_function(df = data, column = paramgroup_var))

'
  , @input_data_1 = N''
 -- , @input_data_1_name = N'SQL_input' 
  , @output_data_1_name = N'OutputDataSet' 
  , @params = N'@paramgroup_var nvarchar(40)'
  , @paramgroup_var = @paramGroup;
GO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM