sqlmlutils を使用して R パッケージをインストールする

適用対象: SQL Server 2019 (15.x) Azure SQL Managed Instance

この記事では、sqlmlutils パッケージの関数を使用して、SQL Server 上の Machine Learning Services およびビッグ データ クラスターのインスタンスに R パッケージをインストールする方法について説明します。 インストールするパッケージは、sp_execute_external_script T-SQL ステートメントを使用してデータベース内で実行されている R スクリプトで使用できます。

注意

この記事で説明されている sqlmlutils パッケージは SQL Server 2019 以降で R パッケージを追加するために使用されます。 SQL Server 2017 以前の場合は、「R ツールを使用してパッケージをインストールする」を参照してください。

この記事では、sqlmlutils パッケージの関数を使用して、Azure SQL Managed Instance の Machine Learning Services のインスタンスに R パッケージをインストールする方法について説明します。 インストールするパッケージは、sp_execute_external_script T-SQL ステートメントを使用してデータベース内で実行されている R スクリプトで使用できます。

Note

SQL Managed Instance Machine Learning Services のインスタンスにプレインストールされているパッケージは、更新またはアンインストールできません。 現在インストールされているパッケージの一覧を表示するには、インストールされている R パッケージの一覧表示に関するページを参照してください。

前提条件

  • RRStudio Desktop を、SQL Server への接続に使用するクライアント コンピューターに インストールします。 スクリプトの実行には任意の R IDE を使用できますが、この記事では RStudio を想定しています。

    クライアント コンピューター上の R のバージョンは、サーバー上の R のバージョンと一致している必要があります。また、インストールするパッケージは、お持ちの R のバージョンに準拠している必要があります。 SQL Server バージョンごとに含まれている R のバージョンの詳細については、「Python および R のバージョン」を参照してください。

    特定の SQL Server の R のバージョンを確認するには、次の T-SQL コマンドを使用します。

    EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'print(R.version)'
    
  • SQL Server への接続に使用するクライアント コンピューターに Azure Data Studio をインストールします。 他のデータベース管理ツールまたはクエリ ツールも使用できますが、この記事では Azure Data Studio を想定しています。

その他の考慮事項

  • パッケージのインストールは、sqlmlutils に渡す接続情報で指定する SQL インスタンス、データベース、ユーザーに固有のものです。 パッケージを複数の SQL インスタンスまたはデータベースで使用する場合や、別のユーザーに対してパッケージを使用する場合は、それぞれにパッケージをインストールする必要があります。 例外として、dbo のメンバーによってパッケージがインストールされた場合、そのパッケージはパブリックであり、すべてのユーザーと共有することができます。 ユーザーがパブリック パッケージの新しいバージョンをインストールした場合、パブリック パッケージは影響を受けませんが、そのユーザーは新しいバージョンにアクセスできます。

  • SQL Server で実行されている R スクリプトでは、既定のインスタンス ライブラリにインストールされているパッケージのみを使用できます。 SQL Server では、外部ライブラリからパッケージを読み込むことはできません。これには同じコンピューター上にある外部ライブラリや、 他の Microsoft 製品と共にインストールされた R ライブラリも含まれます。

  • 強化された SQL Server 環境では、次のパッケージを避けることをお勧めします。

    • ネットワーク アクセスを必要とするパッケージ
    • 管理者特権でのファイル システム アクセスが必要なパッケージ
    • Web 開発、または SQL Server 内で実行しても効果のないタスクに使用されるパッケージ

sqlmlutils をクライアント コンピューターにインストールする

sqlmlutils を使用するには、最初に sqlmlutils を、SQL Server への接続に使用するクライアント コンピューターにインストールする必要があります。

sqlmlutils パッケージは odbc パッケージに依存し、odbc は他の複数のパッケージに依存しています。 次の手順では、これらのパッケージすべてが正しい順序でインストールされます。

sqlmlutils をオンラインでインストールする

クライアント コンピューターがインターネットにアクセスされている場合は、sqlmlutils とその依存パッケージをオンラインでダウンロードしてインストールできます。

  1. 最新の sqlmlutils ファイル (Windows の場合は .zip、Linux の場合は .tar.gz) を https://github.com/microsoft/sqlmlutils/releases からクライアント コンピューターにダウンロードします。 このファイルは展開しないでください。

  2. コマンド プロンプトを開き、次のコマンドを実行して、パッケージ odbc および sqlmlutils をインストールします。 ダウンロードした sqlmlutils ファイルのパスに置き換えます。 odbc パッケージはオンラインで検索され、インストールされます。

    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
    

sqlmlutils をオフラインでインストールする

クライアント コンピューターがインターネットに接続されていない場合は、インターネットにアクセスできるコンピューターを使用して、パッケージ odbcsqlmlutils を事前にダウンロードしておく必要があります。 その後、ファイルをクライアント コンピューターのフォルダーにコピーし、パッケージをオフラインでインストールできます。

odbc パッケージは多数のパッケージに依存しており、パッケージのすべての依存関係を特定するのは困難です。 miniCRAN を使用して、すべての依存パッケージが含まれるパッケージ用のローカル リポジトリ フォルダーを作成することをお勧めします。 詳細については、「miniCRAN を使用してローカル R パッケージ リポジトリを作成する」を参照してください。

sqlmlutils パッケージは、クライアント コンピューターにコピーしてインストールできる 1 つのファイルです。

インターネットに接続されているコンピューターでの操作:

  1. miniCRAN をインストールします。 詳細については、「miniCRAN をインストールする」を参照してください。

  2. RStudio で、次の R スクリプトを実行して、odbc パッケージのローカル リポジトリを作成します。 この例では、リポジトリがフォルダー 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");
    

    Rversion 値については、SQL Server にインストールされている R のバージョンを使用します。 インストールされているバージョンを確認するには、次の T-SQL コマンドを使用します。

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  3. 最新の sqlmlutils ファイル (Windows の場合は .zip、Linux の場合は .tar.gz) を https://github.com/microsoft/sqlmlutils/releases からダウンロードします。 このファイルは展開しないでください。

  4. odbc リポジトリ フォルダーと sqlmlutils ファイル全体をクライアント コンピューターにコピーします。

SQL Server への接続に使用するクライアント コンピューターで、次の操作を実行します。

  1. コマンド プロンプトを開きます。

  2. 次のコマンドを実行して、odbcsqlmlutils を順にインストールします。 このコンピューターにコピーした odbc リポジトリ フォルダーと sqlmlutils ファイルの完全なパスに置き換えます。

    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
    

SQL Server で R パッケージを追加する

次の例では、glue パッケージを SQL Server に追加します。

パッケージをオンラインで追加する

SQL Server への接続に使用するクライアント コンピューターがインターネットにアクセスできる場合は、インターネット経由で sqlmlutils を使って glue パッケージおよびすべての依存関係を検索し、そのパッケージを SQL Server インスタンスにリモートでインストールできます。

  1. クライアント コンピューターで RStudio を開き、新しい R スクリプト ファイルを作成します。

  2. 次の R スクリプトを使用して、sqlmlutils を使って glue パッケージをインストールします。 実際の 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")
    

    ヒント

    scope には、PUBLIC または PRIVATE を指定できます。 パブリック スコープは、全ユーザーが使用できるパッケージをデータベース管理者がインストールする場合に適しています。 プライベート スコープを指定すると、パッケージを使用できるのは、そのパッケージをインストールしたユーザーだけになります。 スコープを指定しなかった場合の既定のスコープは PRIVATE です。

パッケージをオフラインで追加する

クライアント コンピューターがインターネットに接続されていない場合は、インターネットにアクセスできるコンピューターを使用して、miniCRAN を使って glue パッケージをダウンロードできます。 次に、パッケージをオフラインでインストールできるクライアント コンピューターにパッケージをコピーします。 miniCRAN のインストールについては、「miniCRAN をインストールする」を参照してください。

インターネットに接続されているコンピューターでの操作:

  1. 次の R スクリプトを実行して、glue のローカル リポジトリ を作成します。 この例では、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");
    

    Rversion 値については、SQL Server にインストールされている R のバージョンを使用します。 インストールされているバージョンを確認するには、次の T-SQL コマンドを使用します。

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  2. glue リポジトリ フォルダー全体 (c:\downloads\glue) をクライアント コンピューターにコピーします。 たとえば、c:\temp\packages\glue フォルダーにコピーします。

クライアント コンピューターでの操作:

  1. RStudio を開いて、新しい R Script ファイルを作成します。

  2. 次の R スクリプトを使用して、sqlmlutils を使って glue パッケージをインストールします。 ご自身の SQL Server データベース接続情報に置き換えます (Windows 認証を使用しない場合は、uid パラメーターと 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))
    

    ヒント

    scope には、PUBLIC または PRIVATE を指定できます。 パブリック スコープは、全ユーザーが使用できるパッケージをデータベース管理者がインストールする場合に適しています。 プライベート スコープを指定すると、パッケージを使用できるのは、そのパッケージをインストールしたユーザーだけになります。 スコープを指定しなかった場合の既定のスコープは PRIVATE です。

パッケージを使用する

glue パッケージがインストールされたら、T-SQL の sp_execute_external_script コマンドを使用して、SQL Server の R スクリプトでそのパッケージを使用できます。

  1. Azure Data Studio を開き、ご自身の SQL Server データベースに接続します。

  2. 次のコマンドを実行します。

    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)
          ';
    

    結果

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

パッケージを削除する

glue パッケージを削除する場合は、次の R スクリプトを実行します。 先ほど定義したものと同じ接続変数を使用します。

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

その他の sqlmlutils 関数

sqlmlutils パッケージには、R パッケージを管理するためと、SQL Server でストアド プロシージャやクエリを作成、管理、実行するための関数が多数含まれています。 詳細については、sqlmlutils R の README ファイルを参照してください。

sqlmlutils 関数の詳細については、R の help 関数または ? 演算子を使用してださい。 次に例を示します。

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

次のステップ