SPSS ModelerとCloudantの接続

##SPSS ModelerとCloudantの接続
SPSS Modelerの拡張機能を利用して、Cloudantに接続をします。SPSS ModelerはVersion18（Windows）を利用しました。この方法では、SQL Pushback(*1)の機能が効かないため、データの取得等に相当時間がかかります。あくまでも、Cloudantに格納されたデータの基礎解析目的の用途だと思います。
以下を参考にしました。
>[Mining Cloud Data with SPSS – Direct Connection of Cloudant to Bluemix](https://developer.ibm.com/predictiveanalytics/2014/09/30/mining-cloud-data-with-spss-direct-connection-of-cloudant-to-bluemix/)

(*1)SQL Pushbackに関しては以下をご参照ください。

>[SPSS＋dashDB連携　—SQLプッシュバックによる分析処理のパフォーマンス向上—](http://www.ibm.com/developerworks/jp/analytics/library/ba-spss-dashdb-sqlpushback/index.html)

##SPSS Modelerのインストール
SPSS Modelerを起動し、メニューの「拡張機能」>「拡張ハブ」から「Cloudant」の拡張を取得します。「拡張の取得」にチェックを入れ、「OK」を押します。

![cloudant.png](https://qiita-image-store.s3.amazonaws.com/0/130520/64b6ae6f-afbc-e6bc-53f8-e639271b8b0e.png)


##Rのインストール
以下のサイトから、Rをダウンロードしてインストールします。
>https://cran.r-project.org/

R3.3.1はR Essentials for SPSS Modeler’ pluginが未対応なので、R3.2.5 for Wondowsを利用しました。（Previous releasesのリンクからダウンロードできます。）
インストール後、R Consoleを起動し、コマンドを入力実行、以下の3つのパッケージをインストールします。
>install.packages('plyr')
>install.packages('R4CouchDB') 
>install.packages('RCurl')

##R Essentials for SPSS Modeler’pluginのインストール
以下のサイトからR Essentials for SPSS Modeler’ pluginをダウンロードしてインストールします。
>https://developer.ibm.com/predictiveanalytics/downloads/

![ex.png](https://qiita-image-store.s3.amazonaws.com/0/130520/9e40eab9-be86-1abb-2230-d074176b2b4b.png)

インストールの途中で、先ほどインストールをしたRのフォルダの指定が必要になります。

![ins.png](https://qiita-image-store.s3.amazonaws.com/0/130520/b3790ea1-cb09-2eac-f6b0-8ce25f576ceb.png)

インストール後、SPSS Modelerが既に起動している場合には、再起動をしてください。

##接続するCloudantの準備（既にCloudant環境をお持ちの場合にはこのステップは不要です。）
Cloudantのインスタンスを作成します。
Bluemix Consoleにログインし、「カタログ」をクリックします。
カテゴリーの「データおよび分析」を選択し、「Cloudant NoSQL DB」をクリックしてください。

![cl.png](https://qiita-image-store.s3.amazonaws.com/0/130520/939fb76c-58ab-a6c2-ea17-041b12c778c0.png)

1分弱程度でCloudantサービスの作成が完了し、「LAUNCH」ボタンが出現するのでクリックしてください。Cloudant用のWeb Consoleが起動します。
Cloudantの認証情報を確認するために、アプリケーションとBINDします。
Bluemix Consoleの「ダッシュボード」の「Cloud Foundry アプリ」の「アプリの作成」をクリックします。

![da.png](https://qiita-image-store.s3.amazonaws.com/0/130520/0cbe1eab-7a7c-2a39-acbf-56abfec960e8.png)

「WEB」を選択します。

![we.png](https://qiita-image-store.s3.amazonaws.com/0/130520/5736ad4f-eadd-234c-32cb-b7c5676bec1a.png)

「SDK for Node.js」を選択します。

![sdpng.png](https://qiita-image-store.s3.amazonaws.com/0/130520/21b9581b-48b7-8aae-0bd7-ba2fb6865834.png)

「続行」を選択します。

![zo.png](https://qiita-image-store.s3.amazonaws.com/0/130520/ffa3e018-e18f-47e8-ecf6-671a690a62eb.png)

「アプリ名」に任意の名前を入力し「完了」をクリックします。「アプリ名」は他のユーザーと重複しないユニークな名前をつける必要があります。

![sin.png](https://qiita-image-store.s3.amazonaws.com/0/130520/8909e092-ad64-0af1-85e5-7e5c23fcb4ff.png)

数分後に「アプリは稼動しています。」が表示されたら作成は完了です。
作成したアプリの概要を選択し、「サービスまたはAPIのバインド」を選択します。

![appng.png](https://qiita-image-store.s3.amazonaws.com/0/130520/bd504d13-147e-fcc8-a144-65c712d35c5e.png)

先ほど作成したCloudantインスタンスにチェックをつけ、「追加」を選択します。「再ステージ」をします。
作成したサービスから認証情報を確認できますこれらの情報は今後、SPSSと連携をする際に必要になります。

![jo.png](https://qiita-image-store.s3.amazonaws.com/0/130520/d7abd1e7-a801-a507-01ab-26d69bb4a182.png)

##Cloudantへサンプルデータを投入する（既にCloudant環境をお持ちの場合にはこのステップは不要です。）
今回、投入するデータは下記のサイトから取得します
>https://examples.cloudant.com/nyctaxi

Cloudant Consoleに戻り、「Replication」メニューからデータを投入します。
必要項目を入力して「Replicate」をクリックします。

![re.png](https://qiita-image-store.s3.amazonaws.com/0/130520/e3bd5ec4-2c48-b0c3-404b-98d41fe9e461.png)

パスワードを聞かれるので、ご自身の認証情報からパスワードを参照し、「Continue　Replication」をクリックします。
「Active Tasks」の「Replication」からレプリケーションの進捗が確認できます。
レプリケーションが終了すると「Replication」の「Completed Replications」に記載されます。
「Database」からレプリケーションにより作成したデータベースが確認できます。
作成したデータベース（nytaxi）をクリックします。

![nypng.png](https://qiita-image-store.s3.amazonaws.com/0/130520/46741adc-d1d9-d691-9af3-9992c5d827a6.png)

先ほどレプリケーションにより投入したデータを確認することができます。

![ny1.png](https://qiita-image-store.s3.amazonaws.com/0/130520/895062b7-cfea-b8b8-25f7-c8627e710c44.png)

##SPSS ModelerとCloudantの接続
SPSS Modelerを起動します。
「レコード設定」の中に「Cloudant」というノードがあるので、これを使います。

![nd1.png](https://qiita-image-store.s3.amazonaws.com/0/130520/745347b8-9b9f-18af-6321-15a557463281.png)

ノードをダブルクリックして、設定をします。
「host」「username」「password」をご自身の認証情報を参照し、設定します。
（認証情報に同じ項目があります。）
「database」は接続するCloudantのデータベースを入力します。

![nd2png.png](https://qiita-image-store.s3.amazonaws.com/0/130520/92057f4c-c415-ceae-d750-212655b67a35.png)

「Advanced setting」で「Document ID」などでフィルターも出来ます。接続テストなどの際には、これを設定したほうが良いです。

![nd3png.png](https://qiita-image-store.s3.amazonaws.com/0/130520/9a9a6c48-9fbd-3b09-19d1-f996db23db39.png)

「入力」>「ユーザ入力」のノードも必要です。

![nd4png.png](https://qiita-image-store.s3.amazonaws.com/0/130520/3ed05404-6c83-67c5-9f0f-eca93af4d091.png)

Cloudantデータベースの項目の数だけ、フィールドをダミーで用意しておきます。

![nd5.png](https://qiita-image-store.s3.amazonaws.com/0/130520/6f86372d-5f85-f020-dce5-a94594f51296.png)

「出力」>「テーブル」の出力ノードで、データを確認します。

![nd6.png](https://qiita-image-store.s3.amazonaws.com/0/130520/1ddf8742-42be-dc24-a58a-662b22515a56.png)

![nd7.png](https://qiita-image-store.s3.amazonaws.com/0/130520/4869c7ea-0629-9670-7b32-559de9673821.png)

ストリームを組むことも可能です。

![nd8.png](https://qiita-image-store.s3.amazonaws.com/0/130520/40cb42e4-69d7-221a-c76c-9c020b988906.png)

今回は、タクシーの乗車データから、時間帯別の乗車距離と利用件数のグラフを作成してみました。

![gr.png](https://qiita-image-store.s3.amazonaws.com/0/130520/64f71ec8-bbc3-034c-ff05-b00ec3690f8d.png)

##うまく接続できない場合には
まずは、Cloudantにブラウザで接続できるか確認します。
以下のURLで接続します。
>https://<ホスト名>/<データベース名>
例)https://XXXXXXXXX-bluemix.cloudant.com/nytaxi

次にSPSS Modelerの「Cloudant」のノードのコンソール出力を確認します。

![con2.png](https://qiita-image-store.s3.amazonaws.com/0/130520/aeef4d75-b4f1-29a3-d91a-969d9b03bffc.png)

ブラウザではうまくつながるのに、コンソール出力に「Fail to Connect」などが出ている場合には、Windows FireWallやセキュリティソフトの設定に原因がある場合があります。

##終わりに
SPSS Modelerの「機能拡張」には他にも魅力的な「拡張」がありますので、試していきたいと思います。