StoredProcedure: Procedimento Armazenado do SQL Server: Gerador de Classe
StoredProcedure
: gera um Objeto de procedimento armazenado do SQLServer e, opcionalmente, um arquivo .sql que contém uma consulta para criar um procedimento armazenado. O StoredProcedure$registrationVec contém cadeias de caracteres que representam as consultas necessárias para a criação do procedimento armazenado
Uso
StoredProcedure (func, spName, ..., filePath = NULL ,dbName = NULL,
connectionString = NULL, batchSeparator = "GO")
Argumentos
func
Uma função R válida ou um nome de cadeia de caracteres de uma função R válida: 1) Todas as variáveis das quais a função depende devem ser definidas dentro da função ou entram como parâmetros de entrada. Entre os parâmetros de entrada pode haver no máximo 1 estrutura de dados 2) A função deve retornar uma estrutura de dados, uma lista nomeada ou um valor nulo. Pode haver no máximo uma estrutura de dados dentro da lista.
spName
Uma cadeia de caracteres que especifica o nome do procedimento armazenado.
...
Os parâmetros de entrada e saída opcionais para o procedimento armazenado; devem ser objetos de classes InputData, InputParameter ou outputParameter.
filePath
Uma cadeia de caracteres que especifica um caminho para o diretório no qual criar o .sql. Se NULL, o arquivo .sql não será gerado.
dbName
Uma cadeia de caracteres que especifica o nome do banco de dados a ser usado.
connectionString
Uma cadeia de caracteres que especifica a cadeia de conexão.
batchSeparator
O separador de lote SQL desejado (relevante somente se filePath for definido)
Valor
Objeto de Procedimento Armazenado do SQL Server
Exemplos
## Not run:
############# Example 1 #############
# etl1 - reads from and write directly to the database
etl1 <- function() {
# The query to get the data
qq <- "select top 10000 ArrDelay,CRSDepTime,DayOfWeek from AirlineDemoSmall"
# The connection string
conStr <- paste("Driver={ODBC Driver 13 for SQL Server};Server=.;Database=RevoTestDB;",
"Trusted_Connection=Yes;", sep = "")
# The data source - retrieves the data from the database
dsSqls <- RxSqlServerData(sqlQuery=qq, connectionString=conStr)
# The destination data source
dsSqls2 <- RxSqlServerData(table ="cleanData", connectionString = conStr)
# A transformation function
transformFunc <- function(data) {
data$CRSDepHour <- as.integer(trunc(data$CRSDepTime))
return(data)
}
# The transformation variables
transformVars <- c("CRSDepTime")
rxDataStep(inData = dsSqls,
outFile = dsSqls2,
transformFunc=transformFunc,
transformVars=transformVars,
overwrite = TRUE)
return(NULL)
}
# Create a StoredProcedure object
sp_ds_ds <- StoredProcedure(etl1, "spTest",
filePath = ".", dbName ="RevoTestDB")
# Define a connection string
conStr <- paste("Driver={ODBC Driver 13 for SQL Server};Server=.;Database=RevoTestDB;",
"Trusted_Connection=Yes;", sep = "")
# register the stored procedure with a database
registerStoredProcedure(sp_ds_ds, conStr)
# execute the stored procedure
executeStoredProcedure(sp_ds_ds, connectionString = conStr)
############# Example 2 #############
# train 1 takes a data frame with clean data and outputs a model
train1 <- function(in_df) {
in_df[,"DayOfWeek"] <- factor(in_df[,"DayOfWeek"], levels=c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))
# The model formula
formula <- ArrDelay ~ CRSDepTime + DayOfWeek + CRSDepHour:DayOfWeek
# Train the model
rxSetComputeContext("local")
mm <- rxLinMod(formula, data=in_df)
mm <- rxSerializeModel(mm)
return(list("mm" = mm))
}
# create InpuData Object for an input parameter that is a data frame
# note: if the input parameter is not a data frame use InputParameter object
id <- InputData(name = "in_df",
defaultQuery = paste0("select top 10000 ArrDelay,CRSDepTime,",
"DayOfWeek,CRSDepHour from cleanData"))
# create an OutputParameter object for the variable inside the return list
# note: if that variable is a data frame use OutputData object
out <- OutputParameter("mm", "raw")
# connections string
conStr <- paste0("Driver={ODBC Driver 13 for SQL Server};Server=.;Database=RevoTestDB;",
"Trusted_Connection=Yes;")
# create the stored procedure object
sp_df_op <- StoredProcedure("train1", "spTest1", id, out,
filePath = ".")
# register the stored procedure with the database
registerStoredProcedure(sp_df_op, conStr)
# get the linear model
model <- executeStoredProcedure(sp_df_op, connectionString = conStr)
mm <- rxUnserializeModel(model$params$op1)
## End(Not run)