LoginSignup
0
1

More than 5 years have passed since last update.

【SQL Server 2017 による In-Database Python 分析 チュートリアル】Step 2: PowerShellを使用したSQL Serverへのデータインポート

Last updated at Posted at 2017-08-18

チュートリアルのはじめから

SQL開発者のための In-Database Python 分析

前のステップ

Step 1: サンプルデータのダウンロード

次のステップ

Step 3: データの探索と可視化

Step 2: PowerShellを使用したSQL Serverへのデータインポート

このステップでは、ダウンロードしたスクリプトRunSQL_SQL_Walkthrough.ps1を実行して、チュートリアルに必要なデータベースオブジェクトを作成とサンプルデータのインポートを行います。

オブジェクト作成とデータロード

ダウンロードしたファイル群の中のPowerShellスクリプトRunSQL_SQL_Walkthrough.ps1を実行し、チュートリアル環境を準備します。このスクリプトは次のアクションを実行します:

  • SQL Native ClientおよびSQLコマンドラインユーティリティがインストールされていない場合はインストールします。これらは、bcpを使用してデータをバルクロードするために必要です。

  • SQL Serverインスタンスにデータベースとテーブルを作成し、そこへデータをバルクロードします。

  • さらに複数の関数とストアドプロシージャを作成します。

スクリプトの実行

  1. 管理者としてPowerShellコマンドプロンプトを開き、次のコマンドを実行します。

    PowerShell
    .\RunSQL_SQL_Walkthrough.ps1
    

    次の情報を入力するよう求められます。

    • Machine Learning Services(Python)がインストールされているサーバ名またはアドレス。
    • 作成するデータベースの名前
    • 対象のSQL Serverのユーザー名とパスワード。このユーザは、データベース、テーブル、ストアドプロシージャ、関数の作成権限、およびテーブルへのデータロード権限が必要です。ユーザー名とパスワードを省略した場合は現在のWindowsユーザによってログインします。
    • ダウンロードしたファイル群の中のサンプルデータファイルnyctaxi1pct.csvのパス。例えば、C:\tempPythonSQL\nyctaxi1pct.csvです。

    sqldev-python-ps-1-gho9o9.png

    sqldev-python-ps-2-gho9o9.png

  2. 上記手順の一環で指定したデータベース名とユーザー名をプレースホルダに置き換えるように、すべてのT-SQLスクリプトが変更されています。

  3. T-SQLスクリプトによって作成されるストアドプロシージャと関数がデータベース内に作成されていることを確認します。

    T-SQLスクリプトファイル ストアドプロシージャ/関数
    create-db-tb-upload-data.sql データベースと4つのテーブルを作成します。

    テーブルnyctaxi_sample: メインとなるNYC Taxiデータセットが登録されます。ロードされるデータはNYC Taxiデータセットの1%のサンプルです。クラスタ化カラムストアインデックスの定義によってストレージ効率とクエリパフォーマンスを向上させています。

    テーブルnyc_taxi_models: 訓練された高度な分析モデルが登録されます。

    テーブルnyctaxi_sample_training:モデルのトレーニングに使用するデータセットが登録されます。

    テーブルnyctaxi_sample_testing: モデルのテストに使用するデータセットが登録されます。
    fnCalculateDistance.sql 乗車位置と降車位置の間の直接距離を計算するスカラー値関数fnCalculateDistanceを作成します。
    fnEngineerFeatures.sql モデルトレーニング用の特徴値セットを返すテーブル値関数fnEngineerFeaturesを作成します。
    TrainingTestingSplit.sql nyctaxi_sampleテーブルのデータを、nyctaxi_sample_trainingとnyctaxi_sample_testingの2つに分割するプロシージャTrainingTestingSplitを作成します。
    PredictTipSciKitPy.sql モデルを使用した予測のために、scikit-learnで作成した訓練されたモデルを呼び出すプロシージャPredictTipSciKitPyを作成します。プロシージャは、入力パラメータとしてクエリを受け入れ、入力行に対するスコアを含む数値の列を戻します。
    PredictTipRxPy.sql モデルを使用した予測のために、RevoScalePyで作成した訓練されたモデルを呼び出すプロシージャPredictTipRxPyを作成します。プロシージャは、入力パラメータとしてクエリを受け入れ、入力行に対するスコアを含む数値の列を戻します。
    PredictTipSingleModeSciKitPy.sql モデルを使用した予測のために、scikit-learnで作成した訓練されたモデルを呼び出すプロシージャPredictTipSingleModeSciKitPyを作成します。このストアドプロシージャは新しい観測値を入力として、個々の特徴値はインラインパラメータとして受け取り、新しい観測値に対する予測値を返します。
    PredictTipSingleModeRxPy.sql モデルを使用した予測のために、scikit-learnで作成した訓練されたモデルを呼び出すプロシージャPredictTipSingleModeRxPyを作成します。このストアドプロシージャは新しい観測値を入力として、個々の特徴値はインラインパラメータとして受け取り、新しい観測値に対する予測値を返します。
    SerializePlots.sql データ探索用のプロシージャSerializePlotsを作成します。このストアドプロシージャは、Pythonを使用してグラフィックを作成し、グラフオブジェクトをシリアライズします。
    TrainTipPredictionModelSciKitPy.sql scikit-learnによるロジスティック回帰モデルを訓練するプロシージャTrainTipPredictionModelSciKitPyを作成します。このモデルはランダムに選択された60%のデータを使用して訓練され、tipped値(チップをもらうか否か)を予測します。ストアドプロシージャの出力は訓練されたモデルであり、テーブルnyc_taxi_modelsに登録されます。
    TrainTipPredictionModelRxPy.sql RevoScalePyによるロジスティック回帰モデルを訓練するプロシージャTrainTipPredictionModelRxPyを作成します。このモデルはランダムに選択された60%のデータを使用して訓練され、tipped値(チップをもらうか否か)を予測します。ストアドプロシージャの出力は訓練されたモデルであり、テーブルnyc_taxi_modelsに登録されます。

    sqldev-python-browsetables1-gho9o9.png

    [!NOTE]
    T-SQLスクリプトはデータベースオブジェクトを再作成しないため、すでに存在する場合にはデータが重複して登録されます。そのため、スクリプトを再実行する場合は事前に既存オブジェクトを削除してください。

重要:一部オブジェクトの再定義

上記の手順を実行後、以下のSQLを実行し一部のオブジェクトを再定義します。
SQL Server 2017 CTP から SQL Server 2017 RC にバージョンアップした際にRevoScalePyの仕様が変更されたため、その仕様変更に対応させることがこの再定義の主な理由です。

リンク

次のステップ

Step 3: データの探索と可視化

前のステップ

Step 1: サンプルデータのダウンロード

チュートリアルのはじめから

SQL開発者のための In-Database Python 分析

出典

Step 2: Import Data to SQL Server using PowerShell

関連項目

Machine Learning Services with Python

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1