Schnellstart: Python-Funktionen mit SQL-Machine Learning
Gilt für: SQL Server 2017 (14.x) und höher Azure SQL Managed Instance
In diesem Schnellstart erfahren Sie, wie Sie mathematische Python-Funktionen und Python-Hilfsfunktionen mit SQL Server Machine Learning Services, Azure SQL Managed Instance Machine Learning Services oder SQL Server Big Data-Cluster verwenden. Die Implementierung von statistischen Funktionen mit T-SQL ist oft kompliziert, kann aber in Python mit nur wenigen Codezeilen durchgeführt werden.
Voraussetzungen
Zum Durchführen dieser Schnellstartanleitung benötigen Sie folgende Voraussetzungen.
Eine SQL-Datenbank auf einer der folgenden Plattformen:
- SQL Server Machine Learning Services. Informationen zur Installation finden Sie im Windows- oder im Linux-Installationsleitfaden.
- Big Data-Cluster für SQL Server. Weitere Informationen finden Sie unter Aktivieren von Machine Learning Services auf SQL Server-Big Data-Clustern.
- 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 Python-Skripts enthalten. In dieser Schnellstartanleitung wird Azure Data Studio verwendet.
Erstellen einer gespeicherten Prozedur zum Generieren von Zufallszahlen
Der Einfachheit halber verwenden wir das Python-Paket numpy
, das standardmäßig installiert und geladen wird. Das Paket enthält Hunderte von Funktionen für allgemeine statistische Aufgaben, darunter die random.normal
-Funktion, die eine bestimmte Anzahl von Zufallszahlen mithilfe der normalen Verteilung bei angegebener Standardabweichung und Mittelwert generiert.
Der folgende Python-Code gibt beispielsweise 100 Zahlen mit einem Mittelwert von 50 bei einer Standardabweichung von 3 zurück.
numpy.random.normal(size=100, loc=50, scale=3)
Fügen Sie die Python-Funktion in den Python-Skriptparameter sp_execute_external_script
ein, um diese Python-Codezeile über T-SQL aufzurufen. Die Ausgabe erwarten einen Datenrahmen, verwenden sie also pandas
, um ihn zu konvertieren.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import numpy
import pandas
OutputDataSet = pandas.DataFrame(numpy.random.normal(size=100, loc=50, scale=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? Sie definieren eine gespeicherte Prozedur, die Argumente vom Benutzer abruft, und übergeben diese Argumente dann als Variablen an das Python-Skript.
CREATE PROCEDURE MyPyNorm (
@param1 INT
, @param2 INT
, @param3 INT
)
AS
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import numpy
import pandas
OutputDataSet = pandas.DataFrame(numpy.random.normal(size=mynumbers, loc=mymean, scale=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.
Die Zeile, die mit
@params
beginnt, definiert alle vom Python-Code verwendeten Variablen und die entsprechenden SQL-Datentypen.Die unmittelbar folgenden Zeilen ordnen die SQL-Parameternamen den entsprechenden Python-Variablennamen zu.
Nun haben Sie die Python-Funktion in eine gespeicherte Prozedur eingeschlossen und können sie wie folgt ganz einfach aufrufen und ihr andere Werte übergeben:
EXECUTE MyPyNorm @param1 = 100,@param2 = 50, @param3 = 3
Verwenden von Python-Hilfsfunktionen für die Problembehandlung
Python-Pakete bieten eine Vielzahl verschiedener Hilfsfunktionen zur Untersuchung der aktuellen Python-Umgebung. Diese Funktionen können sich als nützlich erweisen, wenn Sie Diskrepanzen bei der Leistung Ihres Python-Codes in SQL Server und externen Umgebungen feststellen.
Beispielsweise können Sie Funktionen für die Systemzeitsteuerung im time
-Paket verwenden, um den Zeitaufwand von Python-Prozessen zu erfassen und Leistungsprobleme zu analysieren.
EXECUTE sp_execute_external_script
@language = N'Python'
, @script = N'
import time
start_time = time.time()
# Run Python processes
elapsed_time = time.time() - start_time
'
, @input_data_1 = N' ;';
Nächste Schritte
Orientieren Sie sich an dem folgenden Schnellstart, um ein Machine Learning-Modell mithilfe von Python mit SQL-Machine Learning zu erstellen: