SQL Server データのクエリを実行し、データを変更する (SQL Server と RevoScaleR のチュートリアル)
適用対象: SQL Server 2016 (13.x) 以降のバージョン
これは、SQL Server で RevoScaleR 関数を使用する方法についての RevoScaleR チュートリアル シリーズのチュートリアル 3 です。
前のチュートリアルでは、SQL Server にデータを読み込みました。 このチュートリアルでは、RevoScaleR を使用してデータを探索および変更できます。
- 変数に関する基本的な情報を返します。
- 生データからカテゴリ データを作成します。
カテゴリデータまたは factor 変数は、探索データの視覚化に役立ちます。 これらをヒストグラムへの入力として使用すると、変数データがどのように表示されるかを把握できます。
列と型のクエリ
R IDE または RGui を使用して R スクリプトを実行します。
最初に、列とそのデータ型の一覧を取得します。 関数 rxGetVarInfo を使用し、分析するデータ ソースを指定できます。 RevoScaleR のバージョンによっては、rxGetVarNames を使用することもできます。
rxGetVarInfo(data = sqlFraudDS)
結果
Var 1: custID, Type: integer
Var 2: gender, Type: integer
Var 3: state, Type: integer
Var 4: cardholder, Type: integer
Var 5: balance, Type: integer
Var 6: numTrans, Type: integer
Var 7: numIntlTrans, Type: integer
Var 8: creditLine, Type: integer
Var 9: fraudRisk, Type: integer
カテゴリ データを作成します。
すべての変数は整数として格納されますが、一部の変数はカテゴリ データ (R で 要因変数 と呼ばれる) を表します。たとえば、state 列には、50 の州およびコロンビア特別区の識別子として使用される数値が含まれています。 データをわかりやすくするために、この数値を州の略称の一覧で置き換えます。
この手順では、略称を含む文字列ベクトルを作成し、そのカテゴリ値を元の整数の識別子にマップします。 その後で、colInfo 引数で新しい変数を使用し、この列を要因として処理するように指定します。 データを分析または移動するたびに、省略形が使用され、列が要素として処理されます。
列を略称にマップしてから要因として使用すると、パフォーマンスも改善されます。 詳細については、「R とデータの最適化」を参照してください。
まず、次のように R 変数 stateAbbを作成し、この変数に追加する文字列のベクトルを定義します。
stateAbb <- c("AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "HI","IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NB", "NC", "ND", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI","SC", "SD", "TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY")
次に、 ccColInfoという名前の列情報オブジェクトを作成します。このオブジェクトは、カテゴリ レベル (州の省略形) への既存の整数値のマッピングを指定します。
このステートメントは、性別およびカード名義人の要因変数も作成します。
ccColInfo <- 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(1:51), newLevels = stateAbb ), balance = list(type = "numeric") )
最新のデータを使用する SQL Server データ ソースを作成するには、以前と同様に RxSqlServerData を呼び出しますが、今回は colInfo 引数を追加します。
sqlFraudDS <- RxSqlServerData(connectionString = sqlConnString, table = sqlFraudTable, colInfo = ccColInfo, rowsPerRead = sqlRowsPerRead)
- table パラメーターでは、先ほど作成したデータ ソースを含む変数 sqlFraudTableを渡します。
- colInfo パラメーターでは、列のデータ型および要因レベルを含む変数 ccColInfo を渡します。
以上の手順で、関数 rxGetVarInfo を使用して新しいデータ ソース内の変数を確認できるようになりました。
rxGetVarInfo(data = sqlFraudDS)
結果
Var 1: custID, Type: integer Var 2: gender 2 factor levels: Male Female Var 3: state 51 factor levels: AK AL AR AZ CA ... VT WA WI WV WY Var 4: cardholder 2 factor levels: Principal Secondary Var 5: balance, Type: integer Var 6: numTrans, Type: integer Var 7: numIntlTrans, Type: integer Var 8: creditLine, Type: integer Var 9: fraudRisk, Type: integer
これで、指定した 3 つの変数 (性別、 州、および カード名義人) は要素として扱われます。