適用対象: SQL Server 2016 (13.x) 以降のバージョン
これは、SQL Server で RevoScaleR 関数を使用する方法についての RevoScaleR チュートリアル シリーズのチュートリアル 5 です。
このチュートリアルでは、前のチュートリアルで作成した確立したデータ ソースとコンピューティング コンテキストを使用して、高性能な R スクリプトを実行します。 このチュートリアルでは、次のタスクのために、ローカルとリモートのサーバー コンピューティング コンテキストを使用します。
- コンピューティング コンテキストを SQL Server に切り替える
- リモート データ オブジェクトに関する概要の統計情報を取得する
- ローカル 概要を計算する
前のチュートリアルを完了している場合は、sqlCompute および sqlComputeTrace というリモート コンピューティング コンテキストがあるはずです。 この後のチュートリアルで、sqlCompute とローカル コンピューティング コンテキストを使用します。
このチュートリアルでは、R IDE または Rgui を使用して R スクリプトを実行します。
リモート データに関する概要の統計情報を計算する
R コードをリモートで実行する前に、リモート コンピューティング コンテキストを指定する必要があります。 sqlCompute パラメーターに指定されている SQL Server コンピューターで後続のすべての計算が行われます。
コンピューティング コンテキストは、変更するまでアクティブな状態が維持されます。 ただし、リモート サーバー コンテキストで実行できない R スクリプトは自動的にローカルで実行されます。
コンピューティング コンテキストがどのように動作するかを確認するには、リモート SQL Server で sqlFraudDS データ ソースに関する概要の統計情報を生成します。 このデータ ソース オブジェクトはチュートリアル 2 で作成され、RevoDeepDive データベースの ccFraudSmall テーブルを表しています。
前のチュートリアルで作成した sqlCompute にコンピューティング コンテキストを切り替えます。
rxSetComputeContext(sqlCompute)
rxSummary 関数を呼び出し、式やデータ ソースなど、必須の引数を渡し、結果を変数
sumOut
に代入します。sumOut <- rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlFraudDS)
R 言語はさまざまな概要関数を提供しますが、RevoScaleR の rxSummary は、SQL Server を含む、さまざまなリモート コンピューティング コンテキストでの実行をサポートします。 同様の関数に関する詳細については、RevoScaleR を使用したデータの概要を参照してください。
SumOut の内容をコンソールに印刷します。
sumOut
注意
エラーが発生した場合は、実行が完了するまで数分待ってから、コマンドを再試行してください。
結果
Summary Statistics Results for: ~gender + balance + numTrans + numIntlTrans + creditLine
Data: sqlFraudDS (RxSqlServerData Data Source)
Number of valid observations: 10000
Name Mean StdDev Min Max ValidObs MissingObs
balance 4075.0318 3926.558714 0 25626 100000
numTrans 29.1061 26.619923 0 100 10000 0 100000
numIntlTrans 4.0868 8.726757 0 60 10000 0 100000
creditLine 9.1856 9.870364 1 75 10000 0 100000
Category Counts for gender
Number of categories: 2
Number of valid observations: 10000
Number of missing observations: 0
gender Counts
Male 6154
Female 3846
ローカル 概要を作成する
すべての作業をローカルに行うように計算コンテキストを変更します。
rxSetComputeContext ("local")
SQL Server からデータを抽出するときに、多くの場合、読み取りごとに抽出される行の数を増やすことで、パフォーマンスを向上させることができます。これは、増加したブロック サイズをメモリ内に確保できることを前提としています。 次のコマンドを実行して、データ ソースで rowsPerRead パラメーターの値を大きくします。 これまでは、 rowsPerRead の値は 5000 に設定されていました。
sqlServerDS1 <- RxSqlServerData( connectionString = sqlConnString, table = sqlFraudTable, colInfo = ccColInfo, rowsPerRead = 10000)
新しいデータ ソースに対して rxSummary を呼び出します。
rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlServerDS1)
実際の結果は、 コンピューターのコンテキストで rxSummary SQL Server を実行した場合と同じになるはずです。 ただし、処理は速くなる場合と遅くなる場合があります。 データは分析のためのローカル コンピューターに転送されるので、処理速度はデータベースへの接続に左右されます。
次のいくつかのチュートリアルでは、リモート コンピューティング コンテキストに戻ります。
rxSetComputeContext(sqlCompute)