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)