次の方法で共有


rxImport を使用したメモリへのデータの読み込み (SQL Server と RevoScaleR のチュートリアル)

適用対象: SQL Server 2016 (13.x) 以降のバージョン

これは、SQL Server で RevoScaleR 関数を使用する方法についての RevoScaleR チュートリアル シリーズのチュートリアル 10 です。

このチュートリアルでは、SQL Server からデータを取得し、rxImport 関数を使用して目的のデータをローカル ファイルに保存する方法について説明します。 この方法を利用すると、データベースに対して再クエリすることなく、ローカルの計算コンテキストでデータを繰り返し分析できます。

rxImport 関数を使用すると、データ ソースからセッション メモリ内のデータ フレームに、またはディスク上の XDF ファイルにデータを移動できます。 移動先としてファイルを指定しない場合、データはデータ フレームとしてメモリに格納されます。

SQL Server のデータのサブセットをローカル メモリに抽出する

リスクの高い個人のみを精査することになった場合を例に説明します。 SQL Server のソース テーブルが大きいため、リスクの高い顧客に関する情報のみを取得する必要があります。 その後、そのデータをローカル ワークステーションのメモリ内のデータ フレームに読み込みます。

  1. 計算コンテキストをローカル ワークステーションにリセットします。

    rxSetComputeContext("local")
    
  2. 新しい SQL Server データ ソース オブジェクトを作成し、 sqlQuery パラメーターに有効な SQL ステートメントを指定します。 この例では、リスク スコアが最上位になっている観察のサブセットが取得されます。 この方法なら、本当に必要なデータのみがローカル メモリに格納されます。

    sqlServerProbDS \<- RxSqlServerData(
        sqlQuery = paste("SELECT * FROM ccScoreOutput2",
        "WHERE (ccFraudProb > .99)"),
        connectionString = sqlConnString)
    
  3. 関数 rxImport を呼び出して、ローカル R セッションのデータ フレームにデータを読み取ります。

    highRisk <- rxImport(sqlServerProbDS)
    

    操作が成功した場合は、次のようなステータス メッセージが表示されます。"Rows Read (読み取られた行) :35, Total Rows Processed (処理された行数の合計) :35, Total Chunk Time (合計チャンク時間) :0.036 seconds (0.036 秒) "

  4. これで、高いリスクの観測対象がイン メモリ データ フレームに格納され、さまざまな 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 パラメーターで追加の操作を指定すると、読み取り対象の各データ群に対して基本的な処理を実行できます。

次のステップ