Compartilhar via


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)