適用対象: SQL Server 2016 (13.x) 以降のバージョン
これは、SQL Server で RevoScaleR 関数を使用する方法についての RevoScaleR チュートリアル シリーズのチュートリアル 13 です。
このチュートリアルでは、XDF ファイルを使用して、リモートとローカルの両方のコンピューティング コンテキストでデータを転送する方法について説明します。 XDF ファイルにデータを格納すると、データを変換できるようになります。
完了したら、ファイル内のデータで新しい SQL Server テーブルを作成します。 関数 rxDataStep は、データを変換し、データ フレームと xdf ファイル間で変換を実行できます。
XDF ファイルから SQL Server テーブルを作成する
この練習では、クレジット カードの不正使用データを再度使用します。 このシナリオでは、カリフォルニア、オレゴン、ワシントンの各州のユーザーに対して追加の分析を実行するように求められています。 効率向上のため、これらの州のデータだけをローカル コンピューターに格納し、性別、カード会員、州、および残高のみの変数を操作します。
以前に作成した
stateAbb変数を再利用して、含めるレベルを特定し、新しい変数statesToKeepに書き込みます。statesToKeep <- sapply(c("CA", "OR", "WA"), grep, stateAbb) statesToKeep結果
CA OR WA 5 38 48 Transact-SQL クエリを使用し、SQL Server から引き渡すデータを定義します。 後で、この変数は rxImport の inData 引数として使用します。
importQuery <- paste("SELECT gender,cardholder,balance,state FROM", sqlFraudTable, "WHERE (state = 5 OR state = 38 OR state = 48)")クエリにライン フィードやタブなどの隠し文字がないことを確認します。
次に、R でデータを操作するときに使用する列を定義します。たとえば、データ セットが小さいとき、クエリは 3 つの州のデータのみを返すため、3 つのファクト レベルのみを必要とします。
statesToKeep変数を再利用して、含める正しいレベルを特定します。importColInfo <- list( gender = list( type = "factor", levels = c("1", "2"), newLevels = c("Male", "Female")), cardholder = list( type = "factor", levels = c("1", "2"), newLevels = c("Principal", "Secondary")), state = list( type = "factor", levels = as.character(statesToKeep), newLevels = names(statesToKeep)) )ローカル コンピューターですべてのデータが使用できる必要があるため、コンピューティング コンテキストをローカルに設定します。
rxSetComputeContext("local")rxImport 関数を使用して、サポートされているデータ ソースからローカル XDF ファイルにデータをインポートできます。 データのローカル コピーを使用することは、同じクエリを何度も実行せずに、データに対してさまざまな分析を行う際に便利なことがあります。
RxSqlServerData の引数として以前定義したの変数を渡し、データ ソース オブジェクトを作成します。
sqlServerImportDS <- RxSqlServerData( connectionString = sqlConnString, sqlQuery = importQuery, colInfo = importColInfo)rxImport を呼び出して、現在の作業ディレクトリの
ccFraudSub.xdfというファイルにデータを書き込みます。localDS <- rxImport(inData = sqlServerImportDS, outFile = "ccFraudSub.xdf", overwrite = TRUE)rxImport 関数から返される
localDsオブジェクトは、ディスクにローカルに保存されたccFraud.xdfデータ ファイルを表す軽量の RxXdfData データ ソース オブジェクトです。XDF ファイルで rxGetVarInfo を呼び出し、データ スキーマが同じであることを確認します。
rxGetVarInfo(data = localDS)結果
rxGetVarInfo(data = localDS) Var 1: gender, Type: factor, no factor levels available Var 2: cardholder, Type: factor, no factor levels available Var 3: balance, Type: integer, Low/High: (0, 22463) Var 4: state, Type: factor, no factor levels availableこれでさまざまな R 関数を呼び出して、SQL Server 上のソース データの場合と同じように、localDs オブジェクトを分析できます。 たとえば、性別によって集計することができます。
rxSummary(~gender + cardholder + balance + state, data = localDS)
次のステップ
このチュートリアルで、RevoScaleR と SQL Server に関する複数パートにおよぶチュートリアル シリーズを終了します。 ここでは、さまざまなデータに関係する計算の概念を紹介し、独自のデータとプロジェクトの要件を扱うための基盤を提供しています。
RevoScaleR についての知識を深めるため、R チュートリアルの一覧に戻って、見逃した演習を順を追って進めることができます。 または、目次にあるハウツーに関する記事を参照して、一般的なタスクに関する情報を確認してください。