Condividi tramite


StoredProcedure: stored procedure di SQL Server: generatore di classi

StoredProcedure: genera un oggetto stored procedure SQLServer e facoltativamente un file .sql contenente una query per creare una stored procedure. StoredProcedure$registrationVec contiene stringhe che rappresentano le query necessarie per la creazione della stored procedure

Utilizzo

  StoredProcedure (func, spName, ..., filePath = NULL ,dbName = NULL,
  connectionString = NULL, batchSeparator = "GO")

Arguments

func

Una funzione R valida o un nome stringa di una funzione R valida: 1) Tutte le variabili su cui si basa la funzione devono essere definite all'interno della funzione o vengono fornite come parametri di input. Tra i parametri di input possono essere presenti al massimo 1 frame di dati 2) La funzione deve restituire un frame di dati, un elenco denominato o NULL. All'interno dell'elenco può essere presente al massimo un frame di dati.

spName

Stringa di caratteri che specifica il nome per la stored procedure.

...

Parametri di input e output facoltativi per la stored procedure; devono essere oggetti di classi InputData, InputParameter o outputParameter.

filePath

Stringa di caratteri che specifica un percorso della directory in cui creare .sql. Se NULL, il file .sql non viene generato.

dbName

Stringa di caratteri che specifica il nome del database da usare.

connectionString

Stringa di caratteri che specifica la stringa di connessione.

batchSeparator

Separatore batch SQL desiderato (applicabile solo se filePath è definito)

Valore

Oggetto Stored procedure di SQLServer

Esempi


 ## 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 InputData 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)