R-функция в вопросе хранимой процедуры SQL - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь настроить простую функцию R с помощью хранимой процедуры SQL, но не могу заставить ее работать без ошибок.

Вот мой скрипт

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 = Страна

Это ошибка, с которой я сталкиваюсь:

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

1 Ответ

0 голосов
/ 19 сентября 2019

Ошибка из-за отсутствия ) в конце 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...