Installer des packages R avec sqlmlutils

S’applique à : SQL Server 2019 (15.x) Azure SQL Managed Instance

Cet article explique comment utiliser les fonctions du package sqlmlutils pour installer des packages R sur une instance de Machine Learning Services sur SQL Server et sur des clusters Big Data. Les packages que vous installez peuvent être utilisés dans des scripts R exécutés dans la base de données à l’aide de l’instruction T-SQL sp_execute_external_script.

Notes

Le package sqlmlutils décrit dans cet article permet d’ajouter des packages R à SQL Server 2019 ou version ultérieure. Pour SQL Server 2017 et les versions antérieurs, consultez Installer des packages avec des outils R.

Cet article explique comment utiliser les fonctions du package sqlmlutils pour installer des packages R sur une instance d’Azure SQL Managed Instance Machine Learning Services. Les packages que vous installez peuvent être utilisés dans des scripts R exécutés dans la base de données à l’aide de l’instruction T-SQL sp_execute_external_script.

Notes

Vous ne pouvez pas mettre à jour ou désinstaller les packages qui ont été préinstallés sur une instance SQL Managed Instance Machine Learning Services. Pour afficher la liste des packages actuellement installés, consultez la Liste de tous les packages R installés.

Prérequis

  • Installez R et RStudio Desktop sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server. Vous pouvez utiliser n’importe quel IDE R pour exécuter les scripts, mais cet article part du principe que vous utilisez RStudio.

    La version de R sur l’ordinateur client doit correspondre à celle utilisée sur le serveur, et les packages que vous installez doivent être conformes à la version de R dont vous disposez. Pour plus d’informations sur la version de R incluse avec chaque version de SQL Server, consultez les Versions de Python et de R.

    Pour vérifier la version de R sur une instance SQL Server déterminée, utilisez la commande T-SQL suivante.

    EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'print(R.version)'
    
  • Installez Azure Data Studio sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server. Vous pouvez utiliser d’autres outils de gestion de base de données ou de requête, mais cet article part du principe que vous utilisez Azure Data Studio.

Autres considérations

  • L’installation du package est spécifique à l’instance SQL, à la base de données et à l’utilisateur que vous spécifiez dans les informations de connexion que vous fournissez à sqlmlutils. Pour utiliser le package dans plusieurs instances ou bases de données SQL, ou pour différents utilisateurs, vous devez installer le package pour chacun d’entre eux. L’exception est que si le package est installé par un membre de dbo, le package est public et est partagé avec tous les utilisateurs. Si un utilisateur installe une version plus récente d’un package public, le package public n’est pas affecté, mais cet utilisateur aura accès à la version plus récente.

  • Le script R s’exécutant dans SQL Server peut utiliser uniquement des packages installés dans la bibliothèque d’instances par défaut. SQL Server ne peut pas charger les packages à partir de bibliothèques externes, même si cette bibliothèque est sur le même ordinateur. Cela comprend les bibliothèques R installées avec d’autres produits Microsoft.

  • Dans un environnement SQL Server renforcé, vous souhaiterez peut-être éviter ce qui suit :

    • Les packages qui nécessitent un accès réseau
    • Les packages qui nécessitent un accès au système de fichiers élevé
    • Les packages utilisés pour le développement Web ou d’autres tâches qui ne bénéficient pas de l’exécution dans SQL Server

Installer sqlmlutils sur l’ordinateur client

Pour utiliser sqlmlutils, vous devez d’abord l’installer sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server.

Le package sqlmlutils dépend du package odbc, et odbc dépend de plusieurs autres packages. Les procédures suivantes installent tous ces packages dans le bon ordre.

Installer sqlmlutils en ligne

Si l’ordinateur client a accès à Internet, vous pouvez télécharger et installer sqlmlutils et ses packages dépendants en ligne.

  1. Téléchargez le fichier sqlmlutils le plus récent (.zip pour Windows, .tar.gz pour Linux) à partir de https://github.com/microsoft/sqlmlutils/releases sur l’ordinateur client. Ne développez pas le fichier.

  2. Ouvrez une invite de commandes et exécutez les commandes suivantes pour installer les packages odbc et sqlmlutils. Remplacez le chemin du fichier sqlmlutils que vous avez téléchargé. Le package odbc se trouve en ligne et s’installe.

    R.exe -e "install.packages('odbc', type='binary')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.zip
    
    R.exe -e "install.packages('odbc')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.tar.gz
    

Installer sqlmlutils hors connexion

Si l’ordinateur client n’a pas de connexion Internet, vous devez télécharger les packages odbc et sqlmlutils à l’avance à l’aide d’un ordinateur qui a accès à Internet. Vous pouvez ensuite copier les fichiers dans un dossier sur l’ordinateur client et installer les packages hors connexion.

Le package odbc contient un certain nombre de packages dépendants, et il est difficile d’identifier toutes les dépendances d’un package. Nous vous recommandons d’utiliser miniCRAN pour créer un dossier de référentiel local pour le package qui comprend tous les packages dépendants. Pour plus d’informations, consultez Créer un référentiel de packages R local à l’aide de miniCRAN.

Le package sqlmlutils se compose d’un seul fichier que vous pouvez copier sur l’ordinateur client et installer.

Sur un ordinateur connecté à Internet :

  1. Installez miniCRAN. Pour plus d’informations, consultez Installer miniCRAN.

  2. Dans RStudio, exécutez le script R suivant pour créer un référentiel local du package odbc. Cet exemple suppose que le référentiel sera créé dans le dossier odbc.

    library("miniCRAN")
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "odbc"
    pkgs_needed <- "odbc"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "win.binary", Rversion = "3.5");
    
    library("miniCRAN")
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "odbc"
    pkgs_needed <- "odbc"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "source", Rversion = "3.5");
    

    Pour la valeur Rversion, utilisez la version de R installée sur SQL Server. Pour vérifier la version installée, utilisez la commande T-SQL suivante.

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  3. Téléchargez le fichier sqlmlutils le plus récent (.zip pour Windows, .tar.gz pour Linux) à partir de https://github.com/microsoft/sqlmlutils/releases. Ne développez pas le fichier.

  4. Copiez la totalité du dossier du référentiel odbc et le fichier sqlmlutils sur l’ordinateur client.

Sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server :

  1. Ouvrez une invite de commandes.

  2. Exécutez les commandes suivantes pour installer odbc et sqlmlutils. Remplacez les chemins complets du dossier du référentiel odbc et du fichier sqlmlutils que vous avez copiés sur cet ordinateur.

    R.exe -e "install.packages('odbc', repos='odbc')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.zip
    
    R.exe -e "install.packages('odbc', repos='odbc')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.tar.gz
    

Ajouter un package R sur SQL Server

Dans l’exemple suivant, vous allez ajouter le package glue à SQL Server.

Ajouter le package en ligne

Si l’ordinateur client que vous utilisez pour vous connecter à SQL Server a accès à Internet, vous pouvez utiliser sqlmlutils pour rechercher le package glue et toutes les dépendances sur Internet, puis installer le package sur une instance SQL Server à distance.

  1. Sur l’ordinateur client, ouvrez RStudio et créez un fichier de script R.

  2. Utilisez le script R suivant pour installer le packageglue à l’aide de sqlmlutils. Remplacez les valeurs existantes par vos propres informations de connexion à la base de données SQL Server.

    library(sqlmlutils)
    connection <- connectionInfo(
      server   = "server",
      database = "database",
      uid      = "username",
      pwd      = "password")
    
    sql_install.packages(connectionString = connection, pkgs = "glue", verbose = TRUE, scope = "PUBLIC")
    

    Conseil

    La valeur scope (étendue) peut être définie sur PUBLIC ou PRIVATE. L’étendue publique est utile pour que l’administrateur de base de données puisse installer des packages que tous les utilisateurs peuvent utiliser. L’étendue privée rend le package disponible uniquement pour l’utilisateur qui l’installe. Si vous ne spécifiez pas l’étendue, l’étendue par défaut est définie sur PRIVÉE.

Ajouter le package hors connexion

Si l’ordinateur client n’a pas de connexion Internet, vous pouvez utiliser miniCRAN pour télécharger le packageglue à l’aide d’un ordinateur qui a accès à Internet. Vous copiez ensuite le package sur l’ordinateur client sur lequel vous pouvez installer le package hors connexion. Consultez Installer miniCRAN pour plus d’informations sur l’installation de miniCRAN.

Sur un ordinateur connecté à Internet :

  1. Exécutez le script R suivant pour créer un référentiel local pour glue. Cet exemple crée le dossier du référentiel dans c:\downloads\glue.

    library("miniCRAN")
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "c:/downloads/glue"
    pkgs_needed <- "glue"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "win.binary", Rversion = "3.5");
    
    library("miniCRAN")
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "c:/downloads/glue"
    pkgs_needed <- "glue"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "source", Rversion = "3.5");
    

    Pour la valeur Rversion, utilisez la version de R installée sur SQL Server. Pour vérifier la version installée, utilisez la commande T-SQL suivante.

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  2. Copiez l’intégralité du dossier du référentiel glue (c:\downloads\glue) sur l’ordinateur client. Par exemple, copiez-le dans le dossier c:\temp\packages\glue.

Sur l’ordinateur client :

  1. Ouvrez RStudio et créez un fichier de script R.

  2. Utilisez le script R suivant pour installer le packageglue à l’aide de sqlmlutils. Remplacez vos propres informations de connexion de base de données SQL Server (si vous n’utilisez pas l’authentification Windows, ajoutez les paramètres uid et pwd).

    library(sqlmlutils)
    connection <- connectionInfo(
      server= "yourserver",
      database = "yourdatabase")
    localRepo = "c:/temp/packages/glue"
    
    sql_install.packages(connectionString = connection, pkgs = "glue", verbose = TRUE, scope = "PUBLIC", repos=paste0("file:///",localRepo))
    

    Conseil

    La valeur scope (étendue) peut être définie sur PUBLIC ou PRIVATE. L’étendue publique est utile pour que l’administrateur de base de données puisse installer des packages que tous les utilisateurs peuvent utiliser. L’étendue privée rend le package disponible uniquement pour l’utilisateur qui l’installe. Si vous ne spécifiez pas l’étendue, l’étendue par défaut est définie sur PRIVÉE.

Utiliser le package

Une fois le package glue installé, vous pouvez l’utiliser dans un script R dans SQL Server à l’aide de la commande T-SQL sp_execute_external_script.

  1. Ouvrez Azure Data Studio et connectez-vous à votre base de données SQL Server.

  2. Exécutez la commande suivante :

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    library(glue)
    
    name <- "Fred"
    birthday <- as.Date("2020-06-14")
    text <- glue(''My name is {name} '',
    ''and my birthday is {format(birthday, "%A, %B %d, %Y")}.'')
    
    print(text)
          ';
    

    Résultats

    My name is Fred and my birthday is Sunday, June 14, 2020.
    

Supprimer le package

Si vous souhaitez supprimer le package glue, exécutez le script R suivant. Utilisez la même variable de connexion que celle que vous avez définie précédemment.

sql_remove.packages(connectionString = connection, pkgs = "glue", scope = "PUBLIC")

Autres fonctions sqlmlutils

Le package sqlmlutils contient un certain nombre de fonctions qui permettent d’une part de gérer les packages R et d’autre part de créer, gérer et exécuter des procédures stockées et des requêtes dans une instance SQL Server. Pour plus d’informations, consultez le fichier README R de sqlmlutils.

Pour en savoir plus sur une fonction sqlmlutils, utilisez la fonction help de R ou l’opérateur ?. Par exemple :

library(sqlmlutils)
help("sql_install.packages")

Étapes suivantes