Schnellstart: R-Funktionen mit SQL Machine Learning

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL Managed Instance

In diesem Schnellstart wird beschrieben, wie Sie mathematische Funktionen und Hilfsfunktionen in R mit SQL Server Machine Learning Services oder in Big Data-Clustern verwenden. Die Implementierung von statistischen Funktionen mit T-SQL ist oft kompliziert, kann aber in R mit nur wenigen Codezeilen durchgeführt werden.

In diesem Schnellstart wird beschrieben, wie Sie mathematische R-Funktionen und Hilfsfunktionen mit SQL Server Machine Learning Services verwenden. Die Implementierung von statistischen Funktionen mit T-SQL ist oft kompliziert, kann aber in R mit nur wenigen Codezeilen durchgeführt werden.

In diesem Schnellstart wird beschrieben, wie Sie mathematische R-Funktionen und Hilfsfunktionen mit SQL Server R Services verwenden. Die Implementierung von statistischen Funktionen mit T-SQL ist oft kompliziert, kann aber in R mit nur wenigen Codezeilen durchgeführt werden.

In dieser Schnellstartanleitung erfahren Sie, wie Sie Datenstrukturen und -typen mit R in Machine Learning Services in Azure SQL Managed Instance verwenden können. Außerdem erhalten Sie Informationen zum Verschieben von Daten zwischen R und SQL Managed Instance und zu Fehlern, die in diesem Zusammenhang häufig auftreten.

Voraussetzungen

Zum Durchführen dieser Schnellstartanleitung benötigen Sie folgende Voraussetzungen.

  • Ein Tool zum Ausführen von SQL-Abfragen, die R-Skripts enthalten. In dieser Schnellstartanleitung wird Azure Data Studio verwendet.

Erstellen einer gespeicherten Prozedur zum Generieren von Zufallszahlen

Der Einfachheit halber verwenden wir das R-Paket stats, das standardmäßig installiert und geladen wird. Das Paket enthält Hunderte von Funktionen für allgemeine statistische Aufgaben, darunter die rnorm-Funktion, die eine bestimmte Anzahl von Zufallszahlen mithilfe der normalen Verteilung bei angegebener Standardabweichung und Mittelwert generiert.

Der folgende R-Code gibt beispielsweise 100 Zahlen mit einem Mittelwert von 50 bei einer Standardabweichung von 3 zurück.

as.data.frame(rnorm(100, mean = 50, sd = 3));

Fügen Sie die R-Funktion wie folgt in den R-Skriptparameter sp_execute_external_script ein, um diese R-Codezeile über T-SQL aufzurufen:

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
         OutputDataSet <- as.data.frame(rnorm(100, mean = 50, sd =3));'
    , @input_data_1 = N'   ;'
      WITH RESULT SETS (([Density] float NOT NULL));

Wie gehen Sie vor, wenn Sie das Erstellen eines anderen Satzes von Zufallszahlen vereinfachen möchten?

Das ist in Kombination mit T-SQL ganz einfach. Sie definieren eine gespeicherte Prozedur, die Argumente vom Benutzer abruft, und übergeben diese Argumente dann als Variablen an das R-Skript.

CREATE PROCEDURE MyRNorm (
    @param1 INT
    , @param2 INT
    , @param3 INT
    )
AS
EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'
	     OutputDataSet <- as.data.frame(rnorm(mynumbers, mymean, mysd));'
    , @input_data_1 = N'   ;'
    , @params = N' @mynumbers int, @mymean int, @mysd int'
    , @mynumbers = @param1
    , @mymean = @param2
    , @mysd = @param3
WITH RESULT SETS(([Density] FLOAT NOT NULL));
  • Die erste Zeile definiert alle SQL-Eingabeparameter, die beim Ausführen der gespeicherten Prozedur erforderlich sind.

  • In der mit @params beginnenden Zeile werden alle Variablen, die im R-Code verwendet werden, und die zugehörigen SQL-Datentypen definiert.

  • Die unmittelbar darauf folgenden Zeilen ordnen die SQL-Parameternamen den entsprechenden R-Variablennamen zu.

Nachdem Sie die R-Funktion in eine gespeicherte Prozedur eingeschlossen haben, können die Funktion ganz einfach wie folgt aufrufen und dabei jeweils andere Werte übergeben:

EXECUTE MyRNorm @param1 = 100,@param2 = 50, @param3 = 3

Verwenden von R-Hilfsfunktionen für die Problembehandlung

Das standardmäßig installierte Paket utils bietet eine Vielzahl von Hilfsfunktionen zum Untersuchen der aktuellen R-Umgebung. Diese Funktionen können sich als nützlich erweisen, wenn Sie Diskrepanzen bei der Leistung Ihres R-Codes in SQL Server und externen Umgebungen feststellen.

Sie können z. B. die Systemzeitfunktionen in R wie system.time und proc.time verwenden, um die Dauer von R-Prozessen zu erfassen und Leistungsprobleme zu analysieren. Im Tutorial Erstellen von Datenfeatures finden Sie ein Beispiel, bei dem Zeitsteuerungsfunktionen von R in die Lösung eingebettet sind.

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
        library(utils);
        start.time <- proc.time();
        
        # Run R processes
        
        elapsed_time <- proc.time() - start.time;'

Weitere nützliche Funktionen zum Verbessern der Leistung finden Sie unter Verwenden von R-Code-Profilerstellungsfunktionen.

Nächste Schritte

Befolgen Sie den folgenden Schnellstart, um ein Machine Learning-Modell mithilfe von R mit SQL Machine Learning zu erstellen: