Kurs

Einführung
Wusstest du, dass du R- und Python-Code direkt in deine T-SQL-Anweisungen schreiben kannst? Machine Learning Services in SQL Server machen Datenverschiebungen überflüssig. Anstatt große und sensible Daten über das Netzwerk zu übertragen oder mit Sample-CSV-Dateien an Genauigkeit zu verlieren, lässt du deinen R/Python-Code direkt in der Datenbank laufen. Über SQL-gespeicherte Prozeduren kannst du deinen R/Python-Code einfach bereitstellen und in ETL-Prozesse oder beliebige Anwendungen einbinden. Trainiere und speichere Machine-Learning-Modelle in deiner Datenbank und bringe Intelligenz dorthin, wo deine Daten liegen.
Du kannst die neuesten Open-Source-Pakete für R/Python installieren und ausführen, um Deep-Learning- und KI-Anwendungen auf großen Datenmengen in SQL Server zu entwickeln. Zusätzlich gibt es führende, hochperformante Algorithmen in Microsofts RevoScaleR- und RevoScalePy-APIs. In Kombination mit den neuesten Innovationen aus der Open-Source-Welt holst du maximale Auswahl, Performance und Skalierung für deine Anwendungen heraus.

Wenn du SQL Server Machine Learning Services ausprobieren möchtest, starte mit dem folgenden Praxis-Tutorial. Falls Machine Learning Services in SQL Server noch nicht installiert ist, folge zuerst dieser Einstiegshilfe: https://blogs.msdn.microsoft.com/mlserver/2018/05/18/getting-started-with-machine-learning-services-in-sql-server/
How-to-Tutorial
Das lernst du
Dieses Tutorial behandelt die Grundlagen, wie du R und Python in T-SQL-Anweisungen ausführst. Nach Abschluss weißt du:
- Wie du R- und Python-Skripte in T-SQL-Anweisungen einbettest.
- Wie du Basisparameter nutzt, um Eingabe- und Ausgabedaten für R/Python-Skripte zu definieren.
- Welche Datentypen verwendet werden, um Daten zwischen SQL und Python/R zu übergeben.
Voraussetzungen für das Setup
Falls Machine Learning Services auf SQL Server nicht installiert ist, lies zunächst diese Einstiegshilfe oder sieh dir diese Videos zum Einrichten an: https://aka.ms/InstallMLServices https://aka.ms/EnableMLServices
Video-Begleitung
Wenn du lieber per Video lernst, gibt es dieses Tutorial auch auf YouTube: @https://aka.ms/ExecuteMLServices 
Grundlagen
Öffne SQL Server Management Studio und verbinde dich mit deinem Server. Öffne eine neue Abfrage und füge dieses einfache Beispiel ein: (Die Beispiele nutzen Python, du kannst alles genauso mit R umsetzen.)
EXEC sp_execute_external_script @language = N'Python',
@script = N'print(3+4)'
Sp_execute_external_script ist eine spezielle, systemeigene gespeicherte Prozedur, die die Ausführung von R und Python in SQL Server ermöglicht. Über den Parameter language wählst du zwischen Python und R. Im Parameter script fügst du R- oder Python-Code ein. Wenn die Ausgabe nicht 7 anzeigt, überprüfe die Einrichtungsschritte in diesem Artikel.
Einstieg in Parameter
Nach dem einfachen Beispiel erweitern wir Schritt für Schritt:
EXEC sp_execute_external_script @language =N'Python',
@script = N'
OutputDataSet = InputDataSet;
',
@input_data_1 =N'SELECT 1 AS Col1';
Machine Learning Services ermöglichen eine natürliche Übergabe zwischen SQL und R/Python über einen Eingabeparameter, der beliebige SQL-Abfragen akzeptiert. Der Eingabeparameter heißt input_data_1.
Im Python-Code siehst du vordefinierte Standardvariablen für den Datenaustausch zwischen Python und SQL. Die Standardnamen sind OutputDataSet und InputDataSet. Du kannst diese Namen wie im folgenden Beispiel anpassen:
EXEC sp_execute_external_script @language =N'Python',
@script = N'
MyOutput = MyInput;
',
@input_data_1_name = N'MyInput',
@input_data_1 =N'SELECT 1 AS foo',
@output_data_1_name =N'MyOutput';
Beim Ausführen dieser Beispiele ist dir vielleicht aufgefallen, dass jeweils ein Ergebnis mit (No column name) zurückkommt. Über die WITH RESULT SETS-Klausel am Ende der Anweisung kannst du Spaltennamen und Datentypen festlegen, als kommagetrennte Liste.
EXEC sp_execute_external_script @language =N'Python',
@script=N'
MyOutput = MyInput;
',
@input_data_1_name = N'MyInput',
@input_data_1 =N'SELECT 1 AS foo,2 AS bar',
@output_data_1_name =N'MyOutput'
WITH RESULT SETS ((MyColName int, MyColName2 int));
Input-/Output-Datentypen
Schauen wir uns die Ein- und Ausgabetypen zwischen SQL und Python genauer an. Deine SQL SELECT-Anweisung übergibt ein „DataFrame“ an Python und nutzt dafür das Python-Paket Pandas. Auch die Ausgabe von Python zurück an SQL muss ein Pandas-DataFrame-Objekt sein. Wenn du Skalare in ein DataFrame umwandeln musst, hilft dieses Beispiel:
EXEC sp_execute_external_script @language =N'Python',
@script=N'
import pandas as pd
c = 1/2
d = 1*2
s = pd.Series([c,d])
df = pd.DataFrame(s)
OutputDataSet = df
'
Die Variablen c und d sind Skalare, die du bei Bedarf in eine Pandas Series packst und anschließend in ein Pandas DataFrame konvertierst. Hier ist ein etwas umfangreicheres Beispiel. Lies für Details und weitere Beispiele in der Pandas-Dokumentation nach:
EXEC sp_execute_external_script @language =N'Python',
@script=N'
import pandas as pd
s = {"col1": [1, 2], "col2": [3, 4]}
df = pd.DataFrame(s)
OutputDataSet = df
'
Jetzt kennst du die Grundlagen, wie du R und Python in T-SQL ausführst. Es ist ganz einfach, EXEC sp_execute_external_script aufzurufen, deinen R- oder Python-Code einzufügen und deine SQL-Select-Abfrage zu übergeben. Vielleicht willst du eine Transformation oder Extraktion durchführen, die in R/Python leicht ist, in SQL aber zu komplex. Vielleicht trainierst du ein tiefes neuronales Netz auf Datenmengen, die zu groß sind, um sie über ein Netzwerk zu senden. Oder du möchtest neue Daten in deinem OLTP-System automatisch bewerten/vorhersagen. Die Einsatzmöglichkeiten sind vielfältig – und du bist jetzt bereit, mit Machine Learning Services in SQL Server Sicherheit, Performance und Skalierung zu steigern.
Weiterführende Ressourcen
Wusstest du, dass du deinen R- und Python-Code auch in deiner bevorzugten IDE wie RStudio oder Jupyter Notebooks schreiben und die Ausführung dann remote an SQL Server senden kannst? Mehr dazu in diesen Dokus: Documentation: https://aka.ms/R-RemoteSQLExecution Documentation: https://aka.ms/R-RemoteSQLExecution Github-Jupyter-Notebook-Beispiel: https://aka.ms/RemoteExecJupyter
Wenn du mehr über SQL lernen möchtest, sieh dir unseren Kurs Intro to SQL for Data Science und unseren SQL-Learning-Hub an.