Démarrage rapide : Fonctions R avec l’apprentissage automatique SQL

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL Managed Instance

Dans ce guide de démarrage rapide, vous apprendrez à utiliser les fonctions mathématiques et utilitaires de R avec SQL Server Machine Learning Services ou sur des clusters Big Data. Les fonctions statistiques sont souvent complexes à implémenter dans T-SQL, mais elles peuvent l’être en R avec seulement quelques lignes de code.

Dans ce guide de démarrage rapide, vous apprendrez à utiliser les fonctions mathématiques et utilitaires de R avec SQL Server Machine Learning Services. Les fonctions statistiques sont souvent complexes à implémenter dans T-SQL, mais elles peuvent l’être en R avec seulement quelques lignes de code.

Dans ce guide de démarrage rapide, vous apprendrez à utiliser les fonctions mathématiques et utilitaires de R avec SQL Server R Services. Les fonctions statistiques sont souvent complexes à implémenter dans T-SQL, mais elles peuvent l’être en R avec seulement quelques lignes de code.

Dans ce démarrage rapide, vous allez apprendre à utiliser des structures de données et des types de données en R dans Azure SQL Managed Instance Machine Learning Services. Vous découvrirez comment déplacer des données entre R et SQL Managed Instance, ainsi que les problèmes courants qui peuvent se produire.

Prérequis

Pour effectuer ce démarrage rapide, vous avez besoin de ce qui suit.

  • Un outil pour exécuter les requêtes SQL qui contiennent des scripts R. Ce guide de démarrage rapide utilise Azure Data Studio.

Créer une procédure stockée pour générer des nombres aléatoires

Pour plus de simplicité, nous allons utiliser le package R stats, qui est installé et chargé par défaut. Le package contient des centaines de fonctions qui permettent d’effectuer des tâches statistiques courantes, notamment la fonction rnorm, qui génère un nombre spécifié de nombres aléatoires en utilisant la distribution normale, avec un écart type et une moyenne donnés.

Par exemple, le code R suivant retourne 100 nombres sur une moyenne de 50, compte tenu d’un écart type de 3.

as.data.frame(rnorm(100, mean = 50, sd = 3));

Pour appeler cette ligne de code R à partir de T-SQL, ajoutez la fonction R dans le paramètre de script R de sp_execute_external_script, comme ceci :

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
         OutputDataSet <- as.data.frame(rnorm(100, mean = 50, sd =3));'
    , @input_data_1 = N'   ;'
      WITH RESULT SETS (([Density] float NOT NULL));

Que se passe-t-il si vous voulez simplifier la génération d’un autre ensemble de nombres alétaoires ?

Rien de plus facile avec une combinaison avec T-SQL. Vous définissez une procédure stockée qui obtient les arguments de l’utilisateur, puis transmettez ces arguments dans le script R en tant que variables.

CREATE PROCEDURE MyRNorm (
    @param1 INT
    , @param2 INT
    , @param3 INT
    )
AS
EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'
	     OutputDataSet <- as.data.frame(rnorm(mynumbers, mymean, 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));
  • La première ligne définit chacun des paramètres d’entrée SQL exigés quand la procédure stockée est exécutée.

  • La ligne commençant par @params définit toutes les variables utilisées par le code R et les types de données SQL correspondants.

  • Les lignes qui suivent immédiatement mappent les noms de paramètres SQL aux noms de variables R correspondants.

Maintenant que vous avez wrappé la fonction R dans une procédure stockée, vous pouvez facilement l’appeler et passer des valeurs différentes, comme ceci :

EXECUTE MyRNorm @param1 = 100,@param2 = 50, @param3 = 3

Utiliser des fonctions utilitaires R à des fins de résolution des problèmes

Le package utils, installé par défaut, propose diverses fonctions utilitaires destinées à analyser l’environnement R actuel. Ces fonctions peuvent être utiles si vous constatez des différences de fonctionnement du code R dans SQL Server et les environnements extérieurs.

Par exemple, vous pouvez utiliser les fonctions de minutage système en R, comme system.time et proc.time, pour capturer l’heure utilisée par les processus R et analyser les problèmes de performances. Pour obtenir un exemple, consultez le didacticiel Créer des fonctionnalités de données à l’aide de R et SQL Server (procédure pas à pas) où les fonctions de minutage R sont incorporées à la solution.

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
        library(utils);
        start.time <- proc.time();
        
        # Run R processes
        
        elapsed_time <- proc.time() - start.time;'

Pour connaître d’autres fonctions utiles, consultez Amélioration du niveau de performance avec les fonctions de profilage du code R.

Étapes suivantes

Pour créer un modèle Machine Learning à l’aide de R avec l’apprentissage automatique SQL, suivez ce démarrage rapide :