Schnellstart: Ausführen einfacher R-Skripts mit SQL Machine Learning
Gilt für: SQL Server 2016 (13.x) und höher Azure SQL Managed Instance
In diesem Schnellstart führen Sie einige einfache R-Skripts mithilfe von SQL Server Machine Learning Services oder in Big Data-Clustern aus. Sie erfahren, wie Sie die gespeicherte Prozedur sp_execute_external_script verwenden, um das Skript in einer SQL Server-Instanz auszuführen.
In diesem Schnellstart führen Sie einige einfache R-Skripts mithilfe von SQL Server Machine Learning Services aus. Sie erfahren, wie Sie die gespeicherte Prozedur sp_execute_external_script verwenden, um das Skript in einer SQL Server-Instanz auszuführen.
In diesem Schnellstart führen Sie einige einfache R-Skripts mithilfe von SQL Server R Services aus. Sie erfahren, wie Sie die gespeicherte Prozedur sp_execute_external_script verwenden, um das Skript in einer SQL Server-Instanz auszuführen.
In diesem Schnellstart führen Sie einige einfache R-Skripts mithilfe von Machine Learning Services in Azure SQL Managed Instance aus. Sie erfahren, wie Sie die gespeicherte Prozedur sp_execute_external_script verwenden, um Skripts in Ihrer Datenbank auszuführen.
Voraussetzungen
Zum Durchführen dieser Schnellstartanleitung benötigen Sie folgende Voraussetzungen.
- SQL Server Machine Learning Services. Informationen zur Installation von Machine Learning Services finden Sie im Windows- oder im Linux-Installationsleitfaden. Sie können auch Machine Learning Services in Big Data-Clustern unter SQL Server aktivieren.
- SQL Server Machine Learning Services. Informationen zur Installation von Machine Learning Services finden Sie im Windows-Installationsleitfaden.
- SQL Server 2016 R Services. Informationen zur Installation von R Services finden Sie im Windows-Installationsleitfaden.
- Machine Learning Services in Azure SQL Managed Instance. In der Übersicht Machine Learning Services in Azure SQL Managed Instance finden Sie weitere Informationen.
- Ein Tool zum Ausführen von SQL-Abfragen, die R-Skripts enthalten. In dieser Schnellstartanleitung wird Azure Data Studio verwendet.
Ausführen eines einfachen Skripts
Sie können ein R-Skript ausführen, indem Sie es als Argument an die gespeicherte Systemprozedur sp_execute_external_script übergeben. Diese gespeicherte Systemprozedur startet die R-Runtime, übergibt Daten an R, verwaltet Sitzungen von R-Benutzern sicher und gibt alle Ergebnisse an den Client zurück.
In den folgenden Schritten führen Sie dieses R-Beispielskript aus:
a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
Öffnen Sie Azure Data Studio, und stellen Sie eine Verbindung mit Ihrem Server her.
Übergeben Sie das gesamte R-Skript an die gespeicherte Prozedur
sp_execute_external_script
.Das Skript wird durch das
@script
-Argument übergeben. Das@script
-Argument darf nur aus zulässigem R-Code bestehen.EXECUTE sp_execute_external_script @language = N'R' , @script = N' a <- 1 b <- 2 c <- a/b d <- a*b print(c(c, d)) '
Das korrekte Ergebnis wird berechnet, und die R-Funktion
print
gibt das Ergebnis im Meldungsfenster zurück.Die Ausgabe könnte beispielsweise wie folgt aussehen:
Ergebnisse
STDOUT message(s) from external script: 0.5 2
Ausführen eines „Hello World“-Skripts
In einem typischen Beispielskript wird nur die Zeichenfolge „Hallo Welt“ (oder „Hello World“) ausgegeben. Führen Sie den folgenden Befehl aus.
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'OutputDataSet<-InputDataSet'
, @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([Hello World] INT));
GO
Folgende Eingaben sind für die gespeicherte Prozedur sp_execute_external_script
möglich:
Eingabe | BESCHREIBUNG |
---|---|
@language | definiert die aufzurufende Spracherweiterung (hier R) |
@script | definiert die Befehle, die an die R-Runtime übergeben werden Ihr gesamtes R-Skript muss als Unicode-Text in dieses Argument eingeschlossen werden. Sie können den Text auch einer Variablen des Typs nvarchar hinzufügen und die Variable anschließend aufrufen. |
@input_data_1 | Die von der Abfrage zurückgegebenen Daten werden an die R-Runtime übergeben, die die Daten als Datenrahmen zurückgibt. |
WITH RESULT SETS | Mit dieser Klausel wird das Schema der zurückgegebenen Datentabelle definiert und „Hello World“ als Spaltenname und int als Datentyp festgelegt. |
Der Befehl gibt folgenden Text aus:
Hello World |
---|
1 |
Verwenden von Eingaben und Ausgaben
Standardmäßig akzeptiert sp_execute_external_script
ein einzelnes Dataset als Eingabe, das in der Regel in Form einer gültigen SQL-Abfrage angegeben wird. Anschließend wird ein einzelner R-Datenrahmen als Ausgabe zurückgegeben.
Verwenden Sie vorerst die standardmäßig festgelegten Eingabe- und Ausgabevariablen von sp_execute_external_script
: InputDataSet und OutputDataSet.
Erstellen Sie eine kleine Tabelle mit Testdaten.
CREATE TABLE RTestData (col1 INT NOT NULL) INSERT INTO RTestData VALUES (1); INSERT INTO RTestData VALUES (10); INSERT INTO RTestData VALUES (100); GO
Verwenden Sie die
SELECT
-Anweisung zum Abfragen der Tabelle.SELECT * FROM RTestData
Ergebnisse
Führen Sie folgendes R-Skript aus: Es ruft die Daten mithilfe der
SELECT
-Anweisung aus der Tabelle ab, übergibt sie über die R-Runtime und gibt sie anschließend als Datenrahmen zurück. Die KlauselWITH RESULT SETS
definiert das Schema der zurückgegeben Datentabelle für SQL und fügt den Spaltennamen NewColName hinzu.EXECUTE sp_execute_external_script @language = N'R' , @script = N'OutputDataSet <- InputDataSet;' , @input_data_1 = N'SELECT * FROM RTestData;' WITH RESULT SETS(([NewColName] INT NOT NULL));
Ergebnisse
Ändern Sie nun die Namen der Eingabe- und Ausgabevariablen. Standardmäßig werden die Eingabe- und Ausgabevariablen InputDataSet und OutputDataSet verwendet. In diesem Skript werden die Namen in SQL_in und SQL_out geändert:
EXECUTE sp_execute_external_script @language = N'R' , @script = N' SQL_out <- SQL_in;' , @input_data_1 = N' SELECT 12 as Col;' , @input_data_1_name = N'SQL_in' , @output_data_1_name = N'SQL_out' WITH RESULT SETS(([NewColName] INT NOT NULL));
Beachten Sie, dass R Groß- und Kleinschreibung beachtet. Die im R-Skript verwendeten Eingabe- und Ausgabevariablen (SQL_out und SQL_in) müssen mit den mit
@input_data_1_name
und@output_data_1_name
definierten Namen (Groß-/Kleinschreibung beachten) identisch sein.Tipp
Nur ein Eingabedataset kann als Parameter übergeben werden, und Sie können nur ein Dataset zurückgeben. Sie können aber andere Datasets in Ihrem R-Code aufrufen und zusätzlich zum Dataset Ausgaben anderer Typen zurückgeben. Außerdem können Sie auch allen Parametern das Schlüsselwort OUTPUT hinzufügen, damit es zusammen mit den Ergebnissen zurückgegeben wird.
Sie können über das R-Skript auch Werte ohne Eingabedaten generieren, indem kein Wert für
@input_data_1
festgelegt wird.Das folgende Skript gibt den Text „hello“ und „world“ aus.
EXECUTE sp_execute_external_script @language = N'R' , @script = N' mytextvariable <- c("hello", " ", "world"); OutputDataSet <- as.data.frame(mytextvariable); ' , @input_data_1 = N'' WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));
Ergebnisse
@script als Eingabe" />
Überprüfen der R-Version
Wenn Sie ermitteln möchten, welche Version von R installiert ist, führen Sie das folgende Skript aus.
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'print(version)';
GO
Die R-Funktion print
gibt die Version im Meldungsfenster zurück. In der folgenden Beispielausgabe sehen Sie, dass in diesem Fall Version 3.4.4 von R installiert ist.
Ergebnisse
STDOUT message(s) from external script:
_
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 4.4
year 2018
month 03
day 15
svn rev 74408
language R
version.string R version 3.4.4 (2018-03-15)
nickname Someone to Lean On
Auflisten von R-Paketen
Microsoft bietet eine Reihe von R-Paketen, die mit Machine Learning Services vorinstalliert werden.
Microsoft bietet eine Reihe von R-Paketen, die mit R Services vorinstalliert werden.
Führen Sie folgendes Skript aus, um eine Liste der installierten R-Pakete (einschließlich Version, Abhängigkeiten, Lizenz und Bibliothekspfad) anzuzeigen:
EXEC sp_execute_external_script @language = N'R'
, @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", "Version", "Depends", "License", "LibPath")]);'
WITH result sets((
Package NVARCHAR(255)
, Version NVARCHAR(100)
, Depends NVARCHAR(4000)
, License NVARCHAR(1000)
, LibPath NVARCHAR(2000)
));
Die Ausgabe stammt von installed.packages()
in R und wird als Resultset zurückgegeben.
Ergebnisse
Nächste Schritte
Befolgen Sie diesen Schnellstart, um die Verwendung von Datenstrukturen zu erlernen, wenn R mit SQL Machine Learning verwendet wird: