Cursus

Introductie
Wist je dat je R- en Python-code kunt schrijven binnen je T-SQL-instructies? Machine Learning Services in SQL Server maakt databeweging overbodig. In plaats van grote en gevoelige data over het netwerk te sturen of nauwkeurigheid te verliezen met voorbeeld-csv-bestanden, kun je je R/Python-code binnen je database uitvoeren. Zet je R/Python-code eenvoudig uit met SQL-opgeslagen procedures, zodat ze beschikbaar zijn in je ETL-processen of voor elke applicatie. Train en sla machinelearningmodellen op in je database en breng zo intelligentie naar de plek waar je data leeft.
Je kunt de nieuwste open-source R/Python-pakketten installeren en draaien om Deep Learning- en AI-applicaties te bouwen op grote hoeveelheden data in SQL Server. Er zijn ook state-of-the-art algoritmen met hoge prestaties in Microsofts RevoScaleR- en RevoScalePy-api’s. Door deze te combineren met de nieuwste innovaties uit de open-sourcewereld, breng je ongeëvenaarde keuze, performance en schaal naar je applicaties.

Ben je enthousiast om SQL Server Machine Learning Services uit te proberen? Bekijk dan de praktische tutorial hieronder. Als je Machine Learning Services nog niet in SQL Server hebt geïnstalleerd, volg dan eerst de stapsgewijze handleiding hier: https://blogs.msdn.microsoft.com/mlserver/2018/05/18/getting-started-with-machine-learning-services-in-sql-server/
How-to-tutorial
Wat je gaat leren
Deze tutorial behandelt de basis van het uitvoeren van R en Python in T-SQL-instructies. Na het voltooien van de tutorial weet je:
- Hoe je R- en Python-scripts insluit in T-SQL-instructies.
- Hoe je basisparameters gebruikt om invoer- en uitvoerdata voor R/Python-scripts op te geven.
- Welke datatypen worden gebruikt om data tussen SQL- en Python/R-processen door te geven.
Vereisten voor de setup
Als je Machine Learning Services niet op SQL Server hebt geïnstalleerd, lees dan eerst deze startgids of bekijk deze video’s om alles in te richten: https://aka.ms/InstallMLServices https://aka.ms/EnableMLServices
Video-uitleg
Leer je graag via video’s? Deze tutorial is ook beschikbaar op YouTube: @https://aka.ms/ExecuteMLServices 
Basis
Open SQL Server Management Studio en maak verbinding met je server. Open een nieuwe query en plak dit basisvoorbeeld: (Hoewel in deze voorbeelden Python wordt gebruikt, kun je alles ook met R doen)
EXEC sp_execute_external_script @language = N'Python',
@script = N'print(3+4)'
Sp_execute_external_script is een speciale systeemopgeslagen procedure die R- en Python-uitvoering in SQL Server mogelijk maakt. Er is een parameter language waarmee je kunt kiezen tussen Python en R. Er is een parameter script waarin je R- of Python-code kunt plakken. Zie je geen uitvoer met 7, ga dan terug en bekijk de installatiestappen in dit artikel.
Introductie van parameters
Na het bespreken van een basisvoorbeeld gaan we meer onderdelen toevoegen:
EXEC sp_execute_external_script @language =N'Python',
@script = N'
OutputDataSet = InputDataSet;
',
@input_data_1 =N'SELECT 1 AS Col1';
Machine Learning Services biedt natuurlijkere communicatie tussen SQL en R/Python met een invoerparameter die elke SQL-query accepteert. De naam van de invoerparameter is input_data_1.
Je ziet in de Python-code dat er standaardvariabelen zijn gedefinieerd om data tussen Python en SQL door te geven. De standaardnamen zijn OutputDataSet en InputDataSet. Je kunt deze standaardnamen wijzigen, zoals in dit voorbeeld:
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';
Toen je deze voorbeelden uitvoerde, is je misschien opgevallen dat ze elk een resultaat teruggeven met (No column name)? Je kunt een naam opgeven voor de kolommen die worden geretourneerd door de clausule WITH RESULT SETS toe te voegen aan het einde van de instructie. Dit is een kommagescheiden lijst met kolommen en hun datatypen.
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));
Invoer-/uitvoer-datatypen
Oké, laten we wat meer bespreken over de invoer-/uitvoer-datatypen die tussen SQL en Python worden gebruikt. Je invoer-SQL SELECT-instructie geeft een "DataFrame" door aan Python, waarbij gebruik wordt gemaakt van het Python Pandas-pakket. Je uitvoer van Python terug naar SQL moet ook een Pandas DataFrame-object zijn. Als je scalaire waarden moet omzetten naar een DataFrame, hier is een voorbeeld:
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
'
De variabelen c en d zijn beide scalaire waarden, die je desgewenst aan een pandas Series kunt toevoegen en vervolgens kunt omzetten naar een pandas DataFrame. Dit voorbeeld is iets geavanceerder; lees de documentatie van het pandas-pakket voor meer details en voorbeelden:
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
'
Je kent nu de basis van het uitvoeren van R en Python in T-SQL! Het is heel eenvoudig om EXEC sp_execute_external_script aan te roepen, je R- of Python-code te kopiëren en plakken, en je SQL-invoerselect te kopiëren en plakken. Misschien moet je een transformatie of extractie doen die in R/Python simpel is maar in SQL te complex om te schrijven. Misschien train je een diep neuraal netwerk op enorme hoeveelheden data die te groot zijn om over een netwerk te sturen. Misschien wil je automatisch een score/voorspelling maken voor nieuwe data die je OLTP-systeem binnenkomt. De use-cases zijn breed, en je bent nu klaar om de beveiliging, performance en schaalbaarheid te vergroten met Machine Learning Services in SQL Server.
Verder lezen
Wist je dat je je R- en Python-code ook in je favoriete IDE, zoals RStudio en Jupyter Notebooks, kunt schrijven en de uitvoering van die code vervolgens op afstand naar SQL Server kunt sturen? Bekijk deze documentatielinks om meer te leren: Documentatie: https://aka.ms/R-RemoteSQLExecution Documentatie: https://aka.ms/R-RemoteSQLExecution Github Jupyter Notebook-voorbeeld: https://aka.ms/RemoteExecJupyter
Wil je meer leren over SQL? Bekijk dan onze cursus Intro to SQL for Data Science en onze hub ‘how to learn SQL’..
