R から JDBC 経由でRaisers Edge NXTののデータを分析
R と Java がインストールされている環境であれば、純粋な R スクリプトと標準的な SQL を使用してRaisers Edge NXT のデータにアクセスできます。CData JDBC Driver for Raisers Edge NXT と RJDBC パッケージを使えば、R からリモートのRaisers Edge NXT のデータを操作できます。CData Driver を使用することで、業界で実績のある標準規格に準拠したドライバーを活用し、人気のオープンソース言語 R でデータにアクセスできます。この記事では、ドライバーを使ってRaisers Edge NXTに SQL クエリを実行し、標準的な R 関数を呼び出してRaisers Edge NXT のデータを可視化する方法を説明します。
R のインストール
マルチスレッドとマネージドコードによるドライバーのパフォーマンス向上を最大限に活かすには、マルチスレッド対応の Microsoft R Open を使用するか、BLAS/LAPACK ライブラリとリンクされたオープンソース R を使用します。この記事では Microsoft R Open 3.2.3 を使用しています。このバージョンは、2016年1月1日時点の CRAN リポジトリのスナップショットからパッケージをインストールするように事前設定されており、再現性が確保されています。
RJDBC パッケージの読み込み
ドライバーを使用するには、RJDBC パッケージをダウンロードしてください。 RJDBC パッケージをインストールしたら、以下のコードでパッケージを読み込みます。
library(RJDBC)
Raisers Edge NXTに JDBC データソースとして接続
Raisers Edge NXTに JDBC データソースとして接続するには、以下の情報が必要です。
- Driver Class: cdata.jdbc.raiseredgenxt.RaiserEdgeNXTDriver に設定します。
- Classpath: ドライバー JAR ファイルの場所を設定します。デフォルトでは、インストールフォルダの lib サブフォルダです。
dbConnect や dbSendQuery などの DBI 関数は、R でデータアクセスコードを記述するための統一されたインターフェースを提供します。以下のコードで、CData JDBC Driver for Raisers Edge NXT に JDBC リクエストを行う DBI ドライバーを初期化します。
driver <- JDBC(driverClass = "cdata.jdbc.raiseredgenxt.RaiserEdgeNXTDriver", classPath = "MyInstallationDir\lib\cdata.jdbc.raiseredgenxt.jar", identifier.quote = "'")
これで DBI 関数を使用してRaisers Edge NXTに接続し、SQL クエリを実行できます。dbConnect 関数で JDBC 接続を初期化します。
BlackBaud Raiser's Edge NXT 接続プロパティの取得・設定方法
接続設定の前に、BlackBaud Raiser's Edge NXT Profile にあるSubscriptionKey を取得しておいてください。
BlackBaud Raiser's Edge NXT への認証(OAuth)
BlackBaud Raiser's Edge NXT は、OAuth 認証規格を使用します。すべてのフローにおいて、以下の設定が必要です。
- AuthScheme をOAuth に設定
- SubscriptionKey をお使いのSubscription Key に設定
- 認可アカウントでBlackBaud Raiser's Edge NXT を有効にし、結果を取得
この設定ののち、続けてOAuth 設定を行います。設定方法は、ヘルプドキュメント の「OAuth」セクションを参照してください。
組み込みの接続文字列デザイナー
JDBC URL の構築には、Raisers Edge NXT JDBC Driver に組み込まれている接続文字列デザイナーが便利です。JAR ファイルをダブルクリックするか、コマンドラインから JAR ファイルを実行してください。
java -jar cdata.jdbc.raiseredgenxt.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
以下は、一般的な JDBC 接続文字列を含む dbConnect 呼び出しの例です。
conn <- dbConnect(driver,"jdbc:raiseredgenxt:SubscriptionKey=MySubscriptionKey;OAuthClientId=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;CallbackURL=http://localhost:33333;")
スキーマの検出
このドライバーは、Raisers Edge NXT API をリレーショナルテーブル、ビュー、ストアドプロシージャとしてモデル化します。以下のコードでテーブルの一覧を取得できます。
dbListTables(conn)
SQL クエリの実行
dbGetQuery 関数を使用して、Raisers Edge NXT API でサポートされている任意の SQL クエリを実行できます。
constituents <- dbGetQuery(conn,"SELECT Id, AddressLines FROM Constituents WHERE Type = 'Home'")
以下のコマンドで、結果をデータビューアウィンドウに表示できます。
View(constituents)
Raisers Edge NXT のデータのプロット
これで、CRAN リポジトリで利用可能なデータ可視化パッケージを使ってRaisers Edge NXT のデータを分析できます。組み込みのバープロット関数でシンプルな棒グラフを作成できます。
par(las=2,ps=10,mar=c(5,15,4,2)) barplot(constituents$AddressLines, main="Raisers Edge NXT Constituents", names.arg = constituents$Id, horiz=TRUE)