Schnellstart: Ausführen einfacher R-Skripts mit SQL Machine LearningQuickstart: Run simple R scripts with SQL machine learning

Anwendungsbereich:Applies to: JaSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) und höher JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceAnwendungsbereich:Applies to: JaSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) and later JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure 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.In this quickstart, you'll run a set of simple R scripts using SQL Server Machine Learning Services or on Big Data Clusters. Sie erfahren, wie Sie die gespeicherte Prozedur sp_execute_external_script verwenden, um das Skript in einer SQL Server-Instanz auszuführen.You'll learn how to use the stored procedure sp_execute_external_script to execute the script in a SQL Server instance.

In diesem Schnellstart führen Sie einige einfache R-Skripts mithilfe von SQL Server Machine Learning Services aus.In this quickstart, you'll run a set of simple R scripts using SQL Server Machine Learning Services. Sie erfahren, wie Sie die gespeicherte Prozedur sp_execute_external_script verwenden, um das Skript in einer SQL Server-Instanz auszuführen.You'll learn how to use the stored procedure sp_execute_external_script to execute the script in a SQL Server instance.

In diesem Schnellstart führen Sie einige einfache R-Skripts mithilfe von SQL Server R Services aus.In this quickstart, you'll run a set of simple R scripts using SQL Server R Services. Sie erfahren, wie Sie die gespeicherte Prozedur sp_execute_external_script verwenden, um das Skript in einer SQL Server-Instanz auszuführen.You'll learn how to use the stored procedure sp_execute_external_script to execute the script in a SQL Server instance.

In diesem Schnellstart führen Sie einige einfache R-Skripts mithilfe von Machine Learning Services in Azure SQL Managed Instance aus.In this quickstart, you'll run a set of simple R scripts using Azure SQL Managed Instance Machine Learning Services. Sie erfahren, wie Sie die gespeicherte Prozedur sp_execute_external_script verwenden, um Skripts in Ihrer Datenbank auszuführen.You'll learn how to use the stored procedure sp_execute_external_script to execute the script in your database.

VoraussetzungenPrerequisites

Zum Durchführen dieser Schnellstartanleitung benötigen Sie folgende Voraussetzungen.You need the following prerequisites to run this quickstart.

  • Ein Tool zum Ausführen von SQL-Abfragen, die R-Skripts enthalten.A tool for running SQL queries that contain R scripts. In dieser Schnellstartanleitung wird Azure Data Studio verwendet.This quickstart uses Azure Data Studio.

Ausführen eines einfachen SkriptsRun a simple script

Sie können ein R-Skript ausführen, indem Sie es als Argument an die gespeicherte Systemprozedur sp_execute_external_script übergeben.To run an R script, you'll pass it as an argument to the system stored procedure, sp_execute_external_script. 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.This system stored procedure starts the R runtime, passes data to R, manages R user sessions securely, and returns any results to the client.

In den folgenden Schritten führen Sie dieses R-Beispielskript aus:In the following steps, you'll run this example R script:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Öffnen Sie Azure Data Studio, und stellen Sie eine Verbindung mit Ihrem Server her.Open Azure Data Studio and connect to your server.

  2. Übergeben Sie das gesamte R-Skript an die gespeicherte Prozedur sp_execute_external_script.Pass the complete R script to the sp_execute_external_script stored procedure.

    Das Skript wird durch das @script-Argument übergeben.The script is passed through the @script argument. Das @script-Argument darf nur aus zulässigem R-Code bestehen.Everything inside the @script argument must be valid R code.

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    a <- 1
    b <- 2
    c <- a/b
    d <- a*b
    print(c(c, d))
    '
    
  3. Das korrekte Ergebnis wird berechnet, und die R-Funktion print gibt das Ergebnis im Meldungsfenster zurück.The correct result is calculated and the R print function returns the result to the Messages window.

    Die Ausgabe könnte beispielsweise wie folgt aussehen:It should look something like this.

    ErgebnisseResults

    STDOUT message(s) from external script:
    0.5 2
    

Ausführen eines „Hello World“-SkriptsRun a Hello World script

In einem typischen Beispielskript wird nur die Zeichenfolge „Hallo Welt“ (oder „Hello World“) ausgegeben.A typical example script is one that just outputs the string "Hello World". Führen Sie den folgenden Befehl aus.Run the following command.

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:Inputs to the sp_execute_external_script stored procedure include:

EingabeInput BESCHREIBUNGDescription
@language definiert die aufzurufende Spracherweiterung (hier R)defines the language extension to call, in this case, R
@script definiert die Befehle, die an die R-Runtime übergeben werdendefines the commands passed to the R runtime. Ihr gesamtes R-Skript muss als Unicode-Text in dieses Argument eingeschlossen werden.Your entire R script must be enclosed in this argument, as Unicode text. Sie können den Text auch einer Variablen des Typs nvarchar hinzufügen und die Variable anschließend aufrufen.You could also add the text to a variable of type nvarchar and then call the variable
@input_data_1 Die von der Abfrage zurückgegebenen Daten werden an die R-Runtime übergeben, die die Daten als Datenrahmen zurückgibt.data returned by the query, passed to the R runtime, which returns the data as a data frame
WITH RESULT SETSWITH RESULT SETS Mit dieser Klausel wird das Schema der zurückgegebenen Datentabelle definiert und „Hello World“ als Spaltenname und int als Datentyp festgelegt.clause defines the schema of the returned data table, adding "Hello World" as the column name, int for the data type

Der Befehl gibt folgenden Text aus:The command outputs the following text:

Hello WorldHello World
11

Verwenden von Eingaben und AusgabenUse inputs and outputs

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.By default, sp_execute_external_script accepts a single dataset as input, which typically you supply in the form of a valid SQL query. Anschließend wird ein einzelner R-Datenrahmen als Ausgabe zurückgegeben.It then returns a single R data frame as output.

Verwenden Sie vorerst die standardmäßig festgelegten Eingabe- und Ausgabevariablen von sp_execute_external_script: InputDataSet und OutputDataSet.For now, let's use the default input and output variables of sp_execute_external_script: InputDataSet and OutputDataSet.

  1. Erstellen Sie eine kleine Tabelle mit Testdaten.Create a small table of test data.

    CREATE TABLE RTestData (col1 INT NOT NULL)
    
    INSERT INTO RTestData
    VALUES (1);
    
    INSERT INTO RTestData
    VALUES (10);
    
    INSERT INTO RTestData
    VALUES (100);
    GO
    
  2. Verwenden Sie die SELECT-Anweisung zum Abfragen der Tabelle.Use the SELECT statement to query the table.

    SELECT *
    FROM RTestData
    

    ErgebnisseResults

    Inhalt der RTestData-Tabelle

  3. Führen Sie folgendes R-Skript aus:Run the following R script. 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.It retrieves the data from the table using the SELECT statement, passes it through the R runtime, and returns the data as a data frame. Die Klausel WITH RESULT SETS definiert das Schema der zurückgegeben Datentabelle für SQL und fügt den Spaltennamen NewColName hinzu.The WITH RESULT SETS clause defines the schema of the returned data table for SQL, adding the column name NewColName.

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

    ErgebnisseResults

    Ausgabe des R-Skripts, das Daten aus einer Tabelle zurückgibt

  4. Ändern Sie nun die Namen der Eingabe- und Ausgabevariablen.Now let's change the names of the input and output variables. 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:The default input and output variable names are InputDataSet and OutputDataSet, this script changes the names to SQL_in and SQL_out:

    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.Note that R is case-sensitive. 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.The input and output variables used in the R script (SQL_out, SQL_in) need to match the names defined with @input_data_1_name and @output_data_1_name, including case.

    Tipp

    Nur ein Eingabedataset kann als Parameter übergeben werden, und Sie können nur ein Dataset zurückgeben.Only one input dataset can be passed as a parameter, and you can return only one dataset. Sie können aber andere Datasets in Ihrem R-Code aufrufen und zusätzlich zum Dataset Ausgaben anderer Typen zurückgeben.However, you can call other datasets from inside your R code and you can return outputs of other types in addition to the dataset. Außerdem können Sie auch allen Parametern das Schlüsselwort OUTPUT hinzufügen, damit es zusammen mit den Ergebnissen zurückgegeben wird.You can also add the OUTPUT keyword to any parameter to have it returned with the results.

  5. Sie können über das R-Skript auch Werte ohne Eingabedaten generieren, indem kein Wert für @input_data_1 festgelegt wird.You also can generate values just using the R script with no input data (@input_data_1 is set to blank).

    Das folgende Skript gibt den Text „hello“ und „world“ aus.The following script outputs the text "hello" and "world".

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

    ErgebnisseResults

    Abfrageergebnisse mit @script als Eingabe

Überprüfen der R-VersionCheck R version

Wenn Sie ermitteln möchten, welche Version von R installiert ist, führen Sie das folgende Skript aus.If you would like to see which version of R is installed, run the following script.

EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'print(version)';
GO

Die R-Funktion print gibt die Version im Meldungsfenster zurück.The R print function returns the version to the Messages window. In der folgenden Beispielausgabe sehen Sie, dass in diesem Fall Version 3.4.4 von R installiert ist.In the example output below, you can see that in this case, R version 3.4.4 is installed.

ErgebnisseResults

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-PaketenList R packages

Microsoft bietet eine Reihe von R-Paketen, die mit Machine Learning Services vorinstalliert werden.Microsoft provides a number of R packages pre-installed with Machine Learning Services.

Microsoft bietet eine Reihe von R-Paketen, die mit R Services vorinstalliert werden.Microsoft provides a number of R packages pre-installed with R Services.

Führen Sie folgendes Skript aus, um eine Liste der installierten R-Pakete (einschließlich Version, Abhängigkeiten, Lizenz und Bibliothekspfad) anzuzeigen:To see a list of which R packages are installed, including version, dependencies, license, and library path information, run the following script.

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.The output is from installed.packages() in R and is returned as a result set.

ErgebnisseResults

Installierte Pakete in R

Nächste SchritteNext steps

Befolgen Sie diesen Schnellstart, um die Verwendung von Datenstrukturen zu erlernen, wenn R mit SQL Machine Learning verwendet wird:To learn how to use data structures when using R with SQL machine learning, follow this quickstart: