StoredProcedure: SQL Server Gespeicherte Prozedur: Klassengenerator
StoredProcedure
: Generiert ein SQLServer Stored Procedure-Objekt und optional eine SQL-Datei, die eine Abfrage zum Erstellen einer gespeicherten Prozedur enthält. StoredProcedure$registrationVec enthält Zeichenfolgen, die die Abfragen darstellen, die zum Erstellen der gespeicherten Prozedur erforderlich sind.
Verwendung
StoredProcedure (func, spName, ..., filePath = NULL ,dbName = NULL,
connectionString = NULL, batchSeparator = "GO")
Argumente
func
Eine gültige R-Funktion oder ein Zeichenfolgenname einer gültigen R-Funktion: 1) Alle Variablen, auf denen die Funktion basiert, sollten entweder innerhalb der Funktion definiert werden oder als Eingabeparameter eingegeben werden. Unter den Eingabeparametern kann es mindestens einen Datenrahmen geben. 2) Die Funktion sollte entweder einen Datenrahmen, eine benannte Liste oder NULL zurückgeben. In der Liste kann sich nur ein Datenrahmen befindet.
spName
Eine Zeichenfolge, die den Namen für die gespeicherte Prozedur angibt.
...
Optionale Eingabe- und Ausgabeparameter für die gespeicherte Prozedur. Dies müssen Objekte der Klassen InputData, InputParameter oder outputParameter sein.
filePath
Eine Zeichenfolge, die einen Pfad zu dem Verzeichnis angibt, in dem die SQL-Datei erstellt werden soll. Wenn der Wert NULL ist, wird die SQL-Datei nicht generiert.
dbName
Eine Zeichenfolge, die den Namen der zu verwendenden Datenbank angibt.
connectionString
Eine Zeichenfolge, die die Verbindungszeichenfolge angibt.
batchSeparator
Gewünschtes SQL-Batchtrennzeichen (nur relevant, wenn filePath definiert ist)
Wert
SQLServer Stored Procedure-Objekt
Beispiele
## 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)