Azure Machine Learning に 内部ネットワークに配置された SQL Server からデータを取り込む方法
Microsoft Japan Data Platform Tech Sales Team
機械学習は先ずデータを取り込むところから始まりますが、Azure Machine Learning (以降、AzureMLと称す) では様々なデータソースからデータを取り込むことが可能となっております。但し、PaaS などからデータを取り込むのとは違い、お客様ネットワークのような内部ネットワークにあるデータソースからデータを取り込むためには少し追加の構成が必要となります。今回は、Azure の VNET 内に配置された IaaS 上の SQL Server から AzureML にデータを取り込む方法についてご紹介いたします。
AzureML にデータを取り込むためには、”Import Data” というモジュールを利用しますが、データソースのタイプとして Azure Blob Storage や SQL Database など以外に、現時点(2017/11/21)ではプレビュー機能となりますがオンプレミス環境からデータを取り込むことも可能です。
オンプレミス環境からデータを取得するためには、ゲートウェイとなるソフトウェアを別途インストール、セットアップする必要がありますが、そもそもどうしてパブリッククラウド上のサービスである AzureML から内部ネットワークのデータにアクセスできるのかを簡単に触れておきます。
パブリックな環境から内部ネットワークにあるデータソースに直接アクセスすることはもちろんできない構成が普通かと思います。そこで、内部ネットワークに Azure との橋渡しを行うためのゲートウェイが必要となります。ゲートウェイから Azure にセッションを確立し、Azure から内部ネットワークにあるデータソースにアクセスする際にはそのセッションを利用してアクセスを行うことにより、データ連携を可能にしています。そのためには、ゲートウェイが Azure にアクセスしセッションを確立できる必要がありますが、使用するゲートウェイによっていくつかの要件があります(下表のリンク参照)。また、使用するサービスによってゲートウェイとして使用するソフトウェアが現時点 (2017/11/21) では下表のように異なります。
Azure サービス | ゲートウェイ | 備考 |
Power BI,PowerApps,Azure Logic Apps,Microsoft Flow,Azure Analysis Services | On-premises data gatewayConnecting to on-premises data sources with Azure On-premises Data Gateway | 以前は Enterprise Gateway, Data Management Gateway と呼ばれていたもの |
Azure Data Factory,Azure Machine Learning | Microsoft Integration Runtime自己ホスト型統合ランタイムを作成し構成する方法 | 以前は Data Management Gateway と呼ばれていたもの |
それでは具体的に AzureML にデータを取得する方法を見ていきましょう。
1.ゲートウェイの設定
先ずは AzureML に、使用するゲートウェイの設定をします。設定を開始するには AzureML Studio の “Settings” から “DATA GATEWAYS” タブを選択して “NEW DATA GATEWAY” ボタンをクリックする方法と、AzureML の Experiment に “Import Data” モジュールを追加してプロパティ部分の Data gateway にて”(add new Data Gateway")” を選択する方法がありますが、どちらの方法でもゲートウェイを追加できます。
ゲートウェイの追加を開始するとゲートウェイの名前を入力する画面が出るので任意の名前を入力します。
次に Integration Runtime のダウンロードリンクと Gateway registration key が表示されます。
上記のダウンロードリンクから Integration Runtime をダウンロードし、内部ネットワークのデータソースにアクセスできるマシンに Integration Runtime をインストールすると、Gateway registration key の入力を求められるので上記の Key を入力し、登録ボタンを押します。
しばらくすると AzureML にゲートウェイが登録され、登録された旨が画面で表示されます。
AzureML Studio の画面でも登録されたことを確認します。
Integration Runtime の構成マネージャーを起動すると、 Azure と接続されていることを確認することもできます。
次に、Integration Runtime の構成マネージャーにて、該当のデータソースに Integration Runtime がアクセスできることをチェックします。
以上により、AzureML –> ゲートウェイ –> データソース という環境が整いました。
2.データソースの設定
では実際に、 AzureML に 内部ネットワーク にある SQL Server からデータを取り込んでみましょう。ゲートウェイ、サーバー、データベースを指定します。
ここで、データソースに対しどの資格情報を使ってアクセスするかを登録するために、”Enter values” ボタンをクリックします。すると Credentials Manager が起動しますので資格情報を入力します。ここで、一点ご注意いただきたいのは、この作業は データソースにアクセスできる環境である必要があります。アクセスできない場合には接続エラーとなり、資格情報の保存ができません。
資格情報が保存できたら、指定したデータベースからどのデータをどのように取得するかの SQL を記述します。
3.データ取得
最後に、正常にデータが取得できるか確認するために Experiment を実行 (Run) をします。正常終了後に “Import Data” モジュールの出力ポートをクリックし “Visualize” メニューを選択いただくと、データが正常に取り込めていることが確認できます。
以上のように、内部ネットワークに配置されたデータを AzureML に取り込みたい場合、データを PaaS などに一旦コピーせずとも内部ネットワークに配置されたデータソースから 直接データを取り込むことが可能で、効率よくデータを機械学習に回せます。是非お試しください。