Démarrage rapide : Exécuter des scripts R simples avec le Machine Learning SQL
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL Managed Instance
Dans ce démarrage rapide, vous allez exécuter un ensemble de scripts R simples en utilisant SQL Server Machine Learning Services ou sur des clusters Big Data. Vous allez découvrir comment utiliser la procédure stockée sp_execute_external_script pour exécuter ce script dans une instance SQL Server.
Dans ce démarrage rapide, vous allez exécuter un ensemble de scripts R simples en utilisant SQL Server Machine Learning Services. Vous allez découvrir comment utiliser la procédure stockée sp_execute_external_script pour exécuter ce script dans une instance SQL Server.
Dans ce démarrage rapide, vous allez exécuter un ensemble de scripts R simples en utilisant SQL Server R Services. Vous allez découvrir comment utiliser la procédure stockée sp_execute_external_script pour exécuter ce script dans une instance SQL Server.
Dans ce démarrage rapide, vous allez exécuter un ensemble de scripts R simples avec Azure SQL Managed Instance Machine Learning Services. Vous découvrirez comment utiliser la procédure stockée sp_execute_external_script pour exécuter le script dans votre base de données.
Prérequis
Pour effectuer ce démarrage rapide, vous avez besoin de ce qui suit.
- SQL Server Machine Learning Services. Pour installer Machine Learning Services, consultez le Guide d’installation Windows ou le Guide d’installation Linux. Vous pouvez également activer Machine Learning Services sur des clusters Big Data SQL Server.
- SQL Server Machine Learning Services. Pour installer Machine Learning Services, consultez le Guide d’installation Windows.
- SQL Server 2016 R Services. Pour installer R Services, consultez le Guide d’installation Windows.
- Azure SQL Managed Instance Machine Learning Services. Pour plus d’informations, consultez Présentation de Machine Learning Services dans Azure SQL Managed Instance.
- Un outil pour exécuter les requêtes SQL qui contiennent des scripts R. Ce guide de démarrage rapide utilise Azure Data Studio.
Exécuter un script simple
Pour exécuter un script R, vous allez le transmettre en tant qu’argument de la procédure stockée système sp_execute_external_script. Cette procédure stockée sur le système démarre le runtime R, transmet les données à R, gère les sessions utilisateur R de manière sécurisée et retourne les résultats au client.
Dans les étapes suivantes, vous allez exécuter cet exemple de script R :
a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
Ouvrez Azure Data Studio et connectez-vous à votre serveur.
Transmettez le script R complet à la procédure stockée
sp_execute_external_script
.Le script est transmis via l’argument
@script
. Tout ce qui se trouve dans l’argument@script
doit être du code R valide.EXECUTE sp_execute_external_script @language = N'R' , @script = N' a <- 1 b <- 2 c <- a/b d <- a*b print(c(c, d)) '
Le résultat correct est calculé et la fonction R
print
le retourne dans la fenêtre Messages.Voici comment il se présente.
Résultats
STDOUT message(s) from external script: 0.5 2
Exécuter un script Hello World
Un exemple type de script est celui qui génère simplement la chaîne « Hello World ». Exécutez la commande suivante :
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'OutputDataSet<-InputDataSet'
, @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([Hello World] INT));
GO
Les entrées de la procédure stockée sp_execute_external_script
sont les suivantes :
Entrée | Description |
---|---|
@language | définit l’extension de langage à appeler, dans le cas présent, R |
@script | définit les commandes transmises au runtime R. Tout votre script R doit être placé dans cet argument sous forme de texte Unicode. Vous pouvez aussi ajouter le texte à une variable de type nvarchar, puis appeler cette variable |
@input_data_1 | données retournées par la requête, transmises au runtime R, qui retourne les données sous forme de trame de données |
WITH RESULT SETS | la clause définit le schéma de la table de données retournée, ajoutant « Hello World » comme nom de colonne, int pour le type de données |
La commande génère le texte suivant :
Hello World |
---|
1 |
Utiliser des entrées et des sorties
Par défaut, sp_execute_external_script
accepte un seul jeu de données en entrée, que vous fournissez généralement sous forme de requête SQL valide. Il retourne ensuite une seule trame de données R en sortie.
Pour le moment, utilisons les variables d’entrée et de sortie par défaut de sp_execute_external_script
: InputDataSet et OutputDataSet.
Créez une petite table de données de test.
CREATE TABLE RTestData (col1 INT NOT NULL) INSERT INTO RTestData VALUES (1); INSERT INTO RTestData VALUES (10); INSERT INTO RTestData VALUES (100); GO
Utilisez l’instruction
SELECT
pour interroger la table.SELECT * FROM RTestData
Résultats
Exécutez le script R suivant. Il récupère les données de la table en utilisant l’instruction
SELECT
, les transmet via le runtime R et retourne les données sous forme de trame de données. La clauseWITH RESULT SETS
définit le schéma de la table de données retournée pour SQL Server, ajoutant le nom de colonne NewColName.EXECUTE sp_execute_external_script @language = N'R' , @script = N'OutputDataSet <- InputDataSet;' , @input_data_1 = N'SELECT * FROM RTestData;' WITH RESULT SETS(([NewColName] INT NOT NULL));
Résultats
À présent, changeons le nom des variables d’entrée et de sortie. Les variables d’entrée et de sortie se nomment par défaut InputDataSet et OutputDataSet ; ce script remplace ces noms par SQL_in et SQL_out :
EXECUTE sp_execute_external_script @language = N'R' , @script = N' SQL_out <- SQL_in;' , @input_data_1 = N' SELECT 12 as Col;' , @input_data_1_name = N'SQL_in' , @output_data_1_name = N'SQL_out' WITH RESULT SETS(([NewColName] INT NOT NULL));
Notez que R respecte la casse. Les variables d’entrée et de sortie utilisées dans le script R (SQL_out, SQL_in) doivent correspondre aux noms définis avec
@input_data_1_name
et@output_data_1_name
, y compris la casse.Conseil
Un seul jeu de données d’entrée peut être passé en tant que paramètre, et un seul jeu de données peut être renvoyé. Toutefois, vous pouvez appeler d’autres jeux de données dans votre code R et des sorties d’autres types peuvent être renvoyées en plus du jeu de données. Vous pouvez également ajouter le mot clé OUTPUT à n’importe quel paramètre pour qu’il soit retourné avec les résultats.
Vous pouvez aussi générer des valeurs en utilisant simplement le script R sans données d’entrée (
@input_data_1
est vide).Le script suivant génère le texte « hello » et « world ».
EXECUTE sp_execute_external_script @language = N'R' , @script = N' mytextvariable <- c("hello", " ", "world"); OutputDataSet <- as.data.frame(mytextvariable); ' , @input_data_1 = N'' WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));
Résultats
@script comme entrée" />
Vérifier la version de R
Si vous souhaitez savoir quelle version de R est installée, exécutez le script suivant.
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'print(version)';
GO
La fonction R print
retourne la version dans la fenêtre Messages. Dans l’exemple de sortie ci-dessous, vous pouvez voir que la version installée de R est dans ce cas la version 3.4.4.
Résultats
STDOUT message(s) from external script:
_
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 4.4
year 2018
month 03
day 15
svn rev 74408
language R
version.string R version 3.4.4 (2018-03-15)
nickname Someone to Lean On
Lister les packages R
Microsoft fournit un certain nombre de packages R préinstallés avec Machine Learning Services.
Microsoft fournit un certain nombre de packages R préinstallés avec R Services.
Pour afficher la liste des packages R installés, dont la version, les dépendances, la licence et le chemin de la bibliothèque, exécutez le script suivant.
EXEC sp_execute_external_script @language = N'R'
, @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", "Version", "Depends", "License", "LibPath")]);'
WITH result sets((
Package NVARCHAR(255)
, Version NVARCHAR(100)
, Depends NVARCHAR(4000)
, License NVARCHAR(1000)
, LibPath NVARCHAR(2000)
));
La sortie provient de installed.packages()
dans R et est retournée sous forme de jeu de résultats.
Résultats
Étapes suivantes
Pour savoir comment utiliser des structures de données quand R est utilisé avec le Machine Learning SQL, suivez ce guide de démarrage rapide :