Partager via


StoredProcedure : procédure stockée SQL Server : générateur de classes

StoredProcedure : génère un objet de procédure stockée SQLServer et éventuellement un fichier .sql contenant une requête pour créer une procédure stockée. StoredProcedure$registrationVec contient des chaînes représentant les requêtes nécessaires à la création de la procédure stockée

Utilisation

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

Arguments

func

Une fonction R valide ou un nom de chaîne d’une fonction R valide : 1) Toutes les variables sur lesquelles repose la fonction doivent être définies à l’intérieur de la fonction ou être fournies en tant que paramètres d’entrée. Parmi les paramètres d’entrée, il peut y avoir au maximum 1 trame de données 2) La fonction doit retourner une trame de données, une liste nommée ou une valeur NULL. Il peut y avoir au plus une trame de données à l’intérieur de la liste.

spName

Chaîne de caractères spécifiant le nom de la procédure stockée.

...

Paramètres d’entrée et de sortie facultatifs pour la procédure stockée. Ils doivent être des objets des classes InputData, InputParameter ou outputParameter.

filePath

Chaîne de caractères spécifiant le chemin d’accès au répertoire dans lequel créer le .sql. Si la valeur est NULL, le fichier .sql n’est pas généré.

dbName

Chaîne de caractères spécifiant le nom de la base de données à utiliser.

connectionString

Chaîne de caractères spécifiant la chaîne de connexion.

batchSeparator

Délimiteur de lot SQL souhaité (applicable uniquement si filePath est défini)

Valeur

Objet de procédure stockée SQLServer

Exemples


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