Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för: SQL Server 2016 (13.x) och senare versioner
sqlrutils är ett R-paket från Microsoft som erbjuder en mekanism för R-användare att lägga sina R-skript i en T-SQL-lagrad procedur, registrera den lagrade proceduren i en databas och köra den lagrade proceduren från en R-utvecklingsmiljö. Paketet ingår i SQL Server strojové učenie Services och SQL Server 2016 R Services.
Genom att konvertera din R-kod för att köras inom en enda lagrad procedur kan du använda SQL Server R Services mer effektivt, vilket kräver att R-skriptet är inbäddat som en parameter för att sp_execute_external_script. Sqlrutils-paketet hjälper dig att bygga detta inbyggda R-skript och ställa in relaterade parametrar på rätt sätt.
sqlrutils-paketet utför dessa uppgifter:
- Sparar det genererade T-SQL-skriptet som en sträng i en R-datastruktur
- Eventuellt kan du generera en .sql fil för T-SQL-skriptet, som du kan redigera eller köra för att skapa en lagrad prozedur
- Registrerar den nyskapade lagrade proceduren med SQL Server-instansen från din R-utvecklingsmiljö
Du kan också köra den lagrade proceduren från en R-miljö genom att skicka välformade parametrar och bearbeta resultaten. Eller så kan du använda den lagrade proceduren i SQL Server för vanliga databasintegrationsscenarier som ETL, modellträning och poängsättning i stora volymer.
Anmärkning
Om du avser att köra den lagrade proceduren från en R-miljö genom att anropa funktionen executeStoredProcedure, måste du använda en ODBC 3.8-leverantör, såsom ODBC Driver 13 för SQL Server.
Fullständig referensdokumentation
sqlrutils-paketet distribueras i flera Microsoft-produkter, men användningen är densamma oavsett om du får paketet i SQL Server eller en annan produkt. Om det finns några produktspecifika beteenden noteras avvikelser på funktionshjälpsidan.
Funktionslista
Följande avsnitt ger en översikt över de funktioner du kan anropa från sqlrutils-paketet för att utveckla en lagrad propuder som innehåller inbäddad R-kod. För detaljer om parametrarna för varje metod eller funktion, se R-hjälpen för paketet: help(package="sqlrutils")
| Funktion | Description |
|---|---|
| executeStoredProcedure | Kör en SQL-lagrad procedur. |
| getInputParameters | Få en lista med inmatningsparametrar till den lagrade proceduren. |
| Inmatningsdata | Definierar källan till data i SQL Server som ska användas i R-dataramen. Du anger namnet på data.frame där indatan ska lagras, och en fråga för att hämta datan, eller ett standardvärde. Endast enkla SELECT-frågor stöds. |
| InputParameter | Definierar en enda indataparameter som kommer att bäddas in i T-SQL-skriptet. Du måste ange namnet på parametern och dess R-datatyp. |
| OutputData | Genererar ett mellanliggande dataobjekt som behövs om din R-funktion returnerar en lista som innehåller en data.frame. Objektet OutputData används för att lagra namnet på en enskild data.frame som erhållits från listan. |
| OutputParameter | Genererar ett mellanliggande dataobjekt som behövs om din R-funktion returnerar en lista. Objektet OutputParameter lagrar namnet och datatypen för en enda medlem i listan, förutsatt att den medlemmen inte är en dataram. |
| registerStoredProcedure | Registrera den lagrade proceduren i en databas. |
| setInputDataQuery | Tilldela en fråga till en indataparameter i den lagrade proceduren. |
| setInputParameterValue | Tilldela ett värde till en indataparameter i den lagrade proceduren. |
| LagradProcedur | Ett lagrat procedurobjekt. |
Hur man använder sqlrutils
Funktionerna i sqlrutils-paketet måste köras på en dator som har SQL Server strojové učenie med R. Om du arbetar på en klientarbetsstation, ställ in en fjärrberäkningskontext för att flytta exekveringen till SQL Server. Arbetsflödet för att använda detta paket inkluderar följande steg:
- Definiera lagrade procedurparametrar (indata, utgångar eller båda)
- Generera och registrera den lagrade proceduren
- Kör den lagrade proceduren
I en R-session, ladda sqlrutils från kommandoraden genom att skriva library(sqlrutils).
Anmärkning
Du kan ladda detta paket på en dator som inte har SQL Server (till exempel på en R-klientinstans) om du ändrar beräkningskontexten till SQL Server och kör koden i den beräkningskontexten.
Definiera parametrar och indata för lagrad procedur
StoredProcedure är huvudkonstruktören som används för att bygga den lagrade proceduren. Denna konstruktör genererar ett SQL Server Stored Procedure-objekt och skapar eventuellt en textfil som innehåller en fråga som kan användas för att generera den lagrade proceduren med ett T-SQL-kommando.
Valfritt kan Funktionen StoredProcedure också registrera den lagrade proceduren med den angivna instansen och databasen.
Använd argumentet
funcför att specificera en giltig R-funktion. Alla variabler som funktionen använder måste definieras antingen inuti funktionen eller tillhandahållas som indataparametrar. Dessa parametrar kan inkludera maximalt en dataram.R-funktionen måste returnera antingen en dataram, en namngiven lista eller en NULL. Om funktionen returnerar en lista kan listan innehålla maximalt en data.frame.
Använd argumentet
spNameför att specificera namnet på den lagrade proceduren du vill skapa.Du kan skicka in valfria in- och utdataparametrar, med hjälp av objekten som skapas av dessa hjälpfunktioner:
setInputData,setInputParameter, ochsetOutputParameter.Valfritt kan du använda
filePathför att ange sökväg och namn på en .sql fil att skapa. Du kan köra denna fil på SQL Server-instansen för att generera den lagrade proceduren med T-SQL.För att definiera servern och databasen där den lagrade proceduren ska sparas, använd argumenten
dbNameochconnectionString.För att få en lista över de InputData- och InputParameter-objekt som användes för att skapa ett specifikt StoredProcedure-objekt , anropa
getInputParameters.För att registrera den lagrade proceduren med den angivna databasen, använd
registerStoredProcedure.
Objektet för lagrad procedur har vanligtvis inga data eller värden kopplade till sig, om inte ett standardvärde har angetts. Data hämtas inte förrän den lagrade proceduren har utförts.
Specificera indata och kör
Använd
setInputDataQueryför att tilldela en fråga till ett InputParameter-objekt . Till exempel, om du har skapat ett lagrat procedurobjekt i R, kan du användasetInputDataQueryför att skicka argument till StoredProcedure-funktionen för att köra den lagrade proceduren med önskade indata.Använd
setInputValueför att tilldela specifika värden till en parameter som lagras som ett InputParameter-objekt . Du skickar sedan parameterobjektet och dess värdetilldelning till funktionen StoredProcedure för att köra den lagrade proceduren med de angivna värdena.Använd
executeStoredProcedureför att köra en lagrad procedur definierad som ett StoredProcedure-objekt . Anropa endast den här funktionen vid körning av en lagrad procedur från R-kod. Använd den inte när du kör den lagrade proceduren från SQL Server med T-SQL.
Anmärkning
Funktionen executeStoredProcedure kräver en ODBC 3.8-leverantör, såsom ODBC Driver 13 för SQL Server.