sqlmlutils を使用した Python パッケージのインストール

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

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

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

Note

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

パッケージの場所とインストール パスの詳細については、「Get Python package information」(Python パッケージ情報の取得) を参照してください。

Note

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

前提条件

  • SQL Server への接続に使用するクライアント コンピューターに Azure Data Studio をインストールします。 他のデータベース管理ツールまたはクエリ ツールも使用できますが、この記事では Azure Data Studio を想定しています。

  • Azure Data Studio に Python カーネルをインストールします。 また、コマンドラインから Python をインストールして使用することもできます。また、Python の拡張機能と共に Visual Studio Code などの代替 Python 開発環境を使用できます。

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

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

    EXECUTE sp_execute_external_script
      @language = N'Python',
      @script = N'
    import sys
    print(sys.version)
    '
    

その他の考慮事項

  • Python パッケージ ライブラリは SQL Server インスタンスの Program Files フォルダー内にあります。既定では、このフォルダーにインストールするには管理者権限が必要です。 詳細については、パッケージ ライブラリの場所に関するページを参照してください。

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

  • パッケージを追加する前に、パッケージが SQL Server 環境に適しているかどうかを検討してください。

    • データベースをクエリするだけのタスクではなく、データベース エンジンとの緊密な統合からメリットが得られるタスク (機械学習など) には、データベース内の Python を使用することをお勧めします。

    • サーバーに対して計算の負荷が大きくなるパッケージを追加すると、パフォーマンスが低下します。

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

      • ネットワーク アクセスを必要とするパッケージ
      • 管理者特権でのファイル システム アクセスが必要なパッケージ
      • Web 開発、または SQL Server 内で実行しても効果のないタスクに使用されるパッケージ
    • Python パッケージ tensorflow は、sqlmlutils を使用してインストールすることはできません。 詳細と回避策については、SQL Server Machine Learning Services の既知の問題に関するページを参照してください。

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

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

Azure Data Studio で

Azure Data Studio で sqlmlutils を使用する場合は、Python カーネル ノートブックの [パッケージの管理] 機能を使用して、それをインストールできます。

  1. Azure Data Studio の Python カーネル ノートブックで、 [パッケージの管理] をクリックします。
  2. [新規追加] をクリックします。
  3. [Search Pip packages](Pip パッケージの検索) フィールドに「sqlmlutils」と入力し、 [検索] をクリックします。
  4. インストールする [パッケージ バージョン] を選択します (最新バージョンが推奨されます)。
  5. [インストール] をクリックし、次に [閉じる] をクリックします。

Python コマンド ラインから

Python コマンド プロンプトまたは IDE から sqlmlutils を使用する場合は、単純な pip コマンドを使用して sqlmlutils をインストールできます。

pip install sqlmlutils

または zip ファイルから sqlmlutils をインストールすることもできます。

  1. pip がインストールされていることを確認します。 詳細については pip のインストールに関するページを参照してください。
  2. 最新の sqlmlutils zip ファイルを、 https://github.com/microsoft/sqlmlutils/tree/master/R/dist からクライアント コンピューターにダウンロードします。 ファイルは解凍しないでください。
  3. コマンド プロンプトを開き、次のコマンドを実行して sqlmlutils パッケージをインストールします。 ダウンロードした sqlmlutils zip ファイルの完全なパスに置き換えます。この例では、ダウンロードしたファイルが c:\temp\sqlmlutils-1.0.0.zip であることを想定しています。
    pip install --upgrade --upgrade-strategy only-if-needed c:\temp\sqlmlutils-1.0.0.zip
    

SQL Server への Python パッケージのインストール

sqlmlutils を使用すると、SQL インスタンスに Python パッケージを追加できます。 その後、SQL インスタンスで実行されている Python コードでこれらのパッケージを使用できます。 sqlmlutils では、CREATE EXTERNAL LIBRARY を使用してパッケージとその依存関係がインストールされます。

次の例では、SQL Server にテキスト ツール パッケージを追加します。

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

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

  1. クライアント コンピューターで、Python または Python 環境を開きます。

  2. 次のコマンドを使用して、テキスト ツール パッケージをインストールします。 独自の SQL Server データベース接続情報に置き換えます (Windows 認証を使用する場合は、uid パラメーターと pwd パラメーターは必要ありません)。

  1. クライアント コンピューターで、Python または Python 環境を開きます。

  2. 次のコマンドを使用して、テキスト ツール パッケージをインストールします。 実際の SQL Server データベースの接続情報に置き換えてください。

import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="server", database="database", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text-tools")

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

SQL Server への接続に使用するクライアント コンピューターにインターネット接続がない場合は、インターネットにアクセスできるコンピューターで pip を使用して、パッケージとそのすべての依存パッケージをローカル フォルダーにダウンロードできます。 次に、パッケージをオフラインでインストールできるクライアント コンピューターにフォルダーをコピーします。

インターネットに接続されているコンピューター

  1. コマンド プロンプトを開き、次のコマンドを実行して、テキスト ツール パッケージを含むローカル フォルダーを作成します。 この例では、フォルダー c:\temp\text-tools を作成します。

    pip download text-tools -d c:\temp\text-tools
    
  2. text-tools フォルダーをクライアント コンピューターにコピーします。 次の例では、c:\temp\packages\text-tools にコピーしたことを想定しています。

クライアント コンピューター上

sqlmlutils を使用して、pip で作成した、ローカル フォルダー内にある各パッケージ (WHL ファイル) をインストールします。 パッケージはどのような順序でインストールしてもかまいません。

この例では、テキスト ツールに依存関係がないので、インストールする text-tools フォルダー内のファイルは 1 つのみです。 これに対し、scikit-plot のようなパッケージには 11 個の依存関係があるため、フォルダー内に 12 個のファイル (scikit-plot パッケージと 11 個の依存パッケージ) があり、それぞれをインストールします。

次の Python スクリプトを実行します。 パッケージの実際のファイル パスと名前、独自の SQL Server データベース接続情報に置き換えます (Windows 認証を使用する場合は、uid パラメーターと pwd パラメーターは必要ありません)。 フォルダー内のパッケージ ファイルごとに sqlmlutils.SQLPackageManager ステートメントを繰り返します。

次の Python スクリプトを実行します。 パッケージの実際のファイル パスと名前、独自の SQL Server データベース接続情報に置き換えます。 フォルダー内のパッケージ ファイルごとに sqlmlutils.SQLPackageManager ステートメントを繰り返します。

import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="yourserver", database="yourdatabase", uid="username", pwd="password"))
sqlmlutils.SQLPackageManager(connection).install("text_tools-1.0.0-py3-none-any.whl")

パッケージを使用する

これで、SQL Server の Python スクリプトでパッケージを使用できるようになりました。 次に例を示します。

EXECUTE sp_execute_external_script
  @language = N'Python',
  @script = N'
from text_tools.finders import find_best_string
corpus = "Lorem Ipsum text"
query = "Ipsum"
first_match = find_best_string(query, corpus)
print(first_match)
  '

SQL Server からのパッケージの削除

テキスト ツール パッケージを削除する場合は、前に定義したのと同じ接続変数を使用して、クライアント コンピューターで次の Python コマンドを使用します。

sqlmlutils.SQLPackageManager(connection).uninstall("text-tools")

その他の sqlmlutils 関数

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

sqlmlutils 関数の詳細については、Python の help 関数を使用してださい。 次に例を示します。

import sqlmlutils
help(SQLPackageManager.install)

次のステップ