Cours

Introduction
Saviez-vous que vous pouvez écrire du code R et Python directement dans vos instructions T-SQL ? Les Machine Learning Services de SQL Server évitent d’avoir à déplacer les données. Plutôt que de transférer de gros volumes de données sensibles sur le réseau ou de perdre en précision avec des fichiers CSV d’échantillons, vous pouvez exécuter votre code R/Python au sein même de votre base de données. Déployez facilement votre code R/Python via des procédures stockées SQL pour le rendre accessible dans vos processus ETL ou depuis n’importe quelle application. Entraînez et stockez des modèles de machine learning dans votre base pour amener l’intelligence là où vivent vos données.
Vous pouvez installer et utiliser les derniers packages open source R/Python pour concevoir des applications d’apprentissage profond et d’IA sur de grands volumes de données dans SQL Server. Microsoft propose aussi des algorithmes de pointe et haute performance via les API RevoScaleR et RevoScalePy. Les combiner avec les innovations du monde open source vous permet d’offrir à vos applications un choix inédit, des performances élevées et une mise à l’échelle sans compromis.

Envie d’essayer SQL Server Machine Learning Services ? Suivez le tutoriel pas à pas ci-dessous. Si Machine Learning Services n’est pas encore installé sur votre SQL Server, commencez par ce guide d’introduction : https://blogs.msdn.microsoft.com/mlserver/2018/05/18/getting-started-with-machine-learning-services-in-sql-server/
Tutoriel pas à pas
Ce que vous allez apprendre
Ce tutoriel couvre les bases pour exécuter R et Python dans des instructions T-SQL. À la fin, vous saurez :
- Comment intégrer des scripts R et Python dans des instructions T-SQL.
- Comment utiliser des paramètres simples pour préciser les données d’entrée et de sortie des scripts R/Python.
- Quels types de données sont utilisés pour échanger des données entre les processus SQL et Python/R.
Pré-requis d’installation
Si Machine Learning Services n’est pas installé sur SQL Server, lisez d’abord ce guide de démarrage ou regardez ces vidéos pour vous configurer : https://aka.ms/InstallMLServices https://aka.ms/EnableMLServices
Support vidéo
Si vous préférez apprendre en vidéo, ce tutoriel est aussi disponible sur YouTube : @https://aka.ms/ExecuteMLServices 
Les bases
Ouvrez SQL Server Management Studio et connectez-vous à votre serveur. Ouvrez une nouvelle requête et collez cet exemple simple : (les exemples utilisent Python, mais vous pouvez faire exactement la même chose avec R)
EXEC sp_execute_external_script @language = N'Python',
@script = N'print(3+4)'
Sp_execute_external_script est une procédure stockée système qui permet d’exécuter R et Python dans SQL Server. Le paramètre language vous laisse choisir entre Python et R. Le paramètre script contient votre code R ou Python. Si vous ne voyez pas « 7 » s’afficher en sortie, revenez sur les étapes de configuration décrites dans cet article.
Introduction aux paramètres
Après cet exemple de base, ajoutons quelques éléments :
EXEC sp_execute_external_script @language =N'Python',
@script = N'
OutputDataSet = InputDataSet;
',
@input_data_1 =N'SELECT 1 AS Col1';
Machine Learning Services facilite les échanges entre SQL et R/Python grâce à un paramètre de données d’entrée qui accepte n’importe quelle requête SQL. Le nom de ce paramètre d’entrée est input_data_1.
Vous pouvez voir dans le code Python qu’il existe des variables par défaut pour faire circuler les données entre Python et SQL. Leurs noms par défaut sont OutputDataSet et InputDataSet. Vous pouvez les renommer, comme dans cet exemple :
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';
En exécutant ces exemples, vous avez peut-être remarqué qu’ils renvoient un résultat avec (No column name) ? Vous pouvez nommer les colonnes renvoyées en ajoutant la clause WITH RESULT SETS à la fin de l’instruction, avec la liste des colonnes et leurs types, séparés par des virgules.
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));
Types de données d’entrée/sortie
Parlons maintenant des types de données utilisés entre SQL et Python. Votre instruction SQL SELECT transmet un « DataFrame » à Python en s’appuyant sur le package Python Pandas. La sortie de Python vers SQL doit également être un objet DataFrame Pandas. Si vous devez convertir des scalaires en DataFrame, voici un exemple :
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
'
Les variables c et d sont des scalaires. Vous pouvez les placer dans une Series Pandas puis la convertir en DataFrame. Voici un exemple un peu plus élaboré ; consultez la documentation du package pandas pour plus de détails et d’exemples :
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
'
Vous connaissez désormais les bases pour exécuter R et Python dans T-SQL ! Il suffit d’appeler EXEC sp_execute_external_script, de copier-coller votre code R ou Python, puis votre requête SQL d’entrée. Peut-être avez-vous une transformation ou une extraction de données plus simple à écrire en R/Python qu’en SQL. Peut-être entraînez-vous un réseau de neurones profond sur des volumes trop importants pour être transférés sur un réseau. Ou peut-être souhaitez-vous scorer/prédire automatiquement un résultat à l’arrivée de nouvelles données dans votre système OLTP. Les cas d’usage sont nombreux, et vous êtes prêt à gagner en sécurité, en performance et en capacité avec Machine Learning Services dans SQL Server.
Pour aller plus loin
Saviez-vous que vous pouvez aussi écrire votre code R et Python dans votre IDE favori, comme RStudio ou Jupyter Notebooks, puis déléguer à distance son exécution à SQL Server ? Consultez ces liens pour en savoir plus : Documentation : https://aka.ms/R-RemoteSQLExecution Documentation : https://aka.ms/R-RemoteSQLExecution Exemple Jupyter Notebook sur GitHub : https://aka.ms/RemoteExecJupyter
Pour aller plus loin avec SQL, découvrez notre cours Intro to SQL for Data Science et notre hub pour apprendre SQL.