適用対象: SQL Server 2016 (13.x) 以降のバージョン
これは、SQL Server で RevoScaleR 関数を使用する方法についての RevoScaleR チュートリアル シリーズのチュートリアル 10 です。
このチュートリアルでは、SQL Server からデータを取得し、rxImport 関数を使用して目的のデータをローカル ファイルに保存する方法について説明します。 この方法を利用すると、データベースに対して再クエリすることなく、ローカルの計算コンテキストでデータを繰り返し分析できます。
rxImport 関数を使用すると、データ ソースからセッション メモリ内のデータ フレームに、またはディスク上の XDF ファイルにデータを移動できます。 移動先としてファイルを指定しない場合、データはデータ フレームとしてメモリに格納されます。
SQL Server のデータのサブセットをローカル メモリに抽出する
リスクの高い個人のみを精査することになった場合を例に説明します。 SQL Server のソース テーブルが大きいため、リスクの高い顧客に関する情報のみを取得する必要があります。 その後、そのデータをローカル ワークステーションのメモリ内のデータ フレームに読み込みます。
計算コンテキストをローカル ワークステーションにリセットします。
rxSetComputeContext("local")新しい SQL Server データ ソース オブジェクトを作成し、 sqlQuery パラメーターに有効な SQL ステートメントを指定します。 この例では、リスク スコアが最上位になっている観察のサブセットが取得されます。 この方法なら、本当に必要なデータのみがローカル メモリに格納されます。
sqlServerProbDS \<- RxSqlServerData( sqlQuery = paste("SELECT * FROM ccScoreOutput2", "WHERE (ccFraudProb > .99)"), connectionString = sqlConnString)関数 rxImport を呼び出して、ローカル R セッションのデータ フレームにデータを読み取ります。
highRisk <- rxImport(sqlServerProbDS)操作が成功した場合は、次のようなステータス メッセージが表示されます。"Rows Read (読み取られた行) :35, Total Rows Processed (処理された行数の合計) :35, Total Chunk Time (合計チャンク時間) :0.036 seconds (0.036 秒) "
これで、高いリスクの観測対象がイン メモリ データ フレームに格納され、さまざまな R 関数を使用してデータ フレームを操作できるようになりました。 この例では、リスク スコアで顧客を並べ替え、高いリスクがあると考えられる顧客の一覧を印刷できます。
orderedHighRisk <- highRisk[order(-highRisk$ccFraudProb),] row.names(orderedHighRisk) <- NULL head(orderedHighRisk)
結果
ccFraudLogitScore state gender cardholder balance numTrans numIntlTrans creditLine ccFraudProb1
9.786345 SD Male Principal 23456 25 5 75 0.99994382
9.433040 FL Female Principal 20629 24 28 75 0.99992003
8.556785 NY Female Principal 19064 82 53 43 0.99980784
8.188668 AZ Female Principal 19948 29 0 75 0.99972235
7.551699 NY Female Principal 11051 95 0 75 0.99947516
7.335080 NV Male Principal 21566 4 6 75 0.9993482
rxImport の詳細
rxImport は、データの移動だけでなく、読み取りプロセスでデータを変換する場合にも使用できます。 たとえば、幅が固定された列の文字数を指定する、変数の説明を指定する、要素列のレベルを設定する、さらにはインポート後に使用する新しいレベルを作成することもできます。
rxImport 関数は、インポート プロセス時に変数名を列に割り当てますが、colInfo パラメーターを使用して新しい変数名を指定したり、colClasses パラメーターを使用してデータ型を変更したりすることができます。
transforms パラメーターで追加の操作を指定すると、読み取り対象の各データ群に対して基本的な処理を実行できます。