Geckoboard にDynamics CRM、NetSuite、Marketo などのデータ連携先を追加（CData Cloud Hub）

この記事では、ダッシュボードツールGeckoboard にDynamics CRM、NetSuite、Marketo などの外部データを追加してリアルタイム連携を可能にする方法を説明します。利用するツールはiPaaS のCData Cloud Hub です。

## Geckoboard について

Geckoboard （[https://www.geckoboard.com/](https://www.geckoboard.com/)）は、クラウドサービスとして提供されるダッシュボードツールで、KPI のダッシュボードに強そうです。DB では、MySQL、PostgreSQL、Redshift に対応しているほか、Salesforce やGoogle sheets などの多様なSaaS データに対応しています。
![geckoboard-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/56bc46d3-7f2d-cefc-1d7b-2163f7c6c6f9.png)

ちなみにGecko って、「ヤモリ」のことなんですよね。カラフルなヤモリが壁に張り付いているイメージとダッシュボードが重なったんでしょうか（デマカセ）。

## CData Cloud Hub について
CData Cloud Hub（[https://www.cdata.com/cloudhub/](https://www.cdata.com/cloudhub/)）は、100 を超えるSaaS やNoSQL をSQL インターフェースに統一してアクセス可能にするサービスです。Salesforce、Dynamics CRM、NetSuite、Marketo、kintone、BigQuery といった異なるAPI・インターフェースを持ったサービスに対して、インターネット越しにSQL でのクエリを実現します。「データ仮想化」サービスと言われたり、DaaS やiPaaS のカテゴリに入ったりもします。
![geckoboard-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/7f56684f-ae7a-1bc2-7c3d-ff34857f50da.png)



## Cloud Hub でDynamics CRM に接続
Geckobaord は、Dynamics CRM などのデータソースに対応していません。今回はCloud Hub にDynamics CRM の仮想RDB エンドポイントを作成し、Geckoboard からシームレスにリアルタイムDynamics CRM データをクエリできるようにします。

### Dynamics CRM をデータソースに設定
Cloud Hub のWeb コンソール画面にログインし、［DATABASE］タブを開きます。ロゴからDynamics CRM のロゴをクリックして開きます。

<img width="932" alt="geckoboard-1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/3d5d93ba-cdec-8986-83f1-7eebbb281b77.png">

開いたデータベース設定画面で、ダッシュボードでデータを参照したいアカウントの認証情報を入力してDynamics CRM に接続します。
<img width="929" alt="geckoboard-2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/adc4a18c-81a9-6567-e3e9-9b127c5378e1.png">

テスト接続をして、問題がなければ、接続を保存します。

これだけの設定で、Dynamics CRM がCloud Hub に登録され、仮想RDB としてSQL でクエリできるようになりました。

Cloud Hub では、データをOData、MySQL、TDS(SQL Server）の3種類のインターフェースで利用可能です。利用するインターフェースにチェックを入れます。
<img width="810" alt="geckoboard-3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/8709f3af-b2c3-ee87-30dc-8eb5de2c92f6.png">

同様にMarketo やNetSuite などのSaaS についてもデータソース設定が可能です。


## Geckoboard でDynamics CRM データをクエリ・ビジュアライズ

### Geckoboard でDatabase としてDynamics CRM(Cloud Hub)を登録
Geckoboard にログインします。新しいWidjet を作ります。
![geckoboard-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/41304fb2-edc7-6e5e-581b-b7064f963299.png)



利用可能なデータソースの一覧が表示されます。Dynamics CRM は一覧にないので、Cloud Hub の出番です。［Database］アイコンを選択します。
<img width="901" alt="geckoboard-4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/828c88e7-d4f3-07c5-2556-6e335b23164b.png">

利用可能なデータベースが表示されます。［MySQL］を選択します。
<img width="951" alt="geckoboard-5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/6800676f-5555-7e54-c4aa-c87d83b6f237.png">

MySQL のデータベース接続画面で、MySQL DB ではなく、CData Cloud Hub に設定したDynamics CRM を設定します。

* Database type: MySQL
* Connection Name: 任意
* Host: xxxxcdatacloud.net （Cloud Hub で表示されるエンドポイント名）
* Database name: Cloud Hub の接続名
* Username & Password: Cloud Hub の［USER］タブで設定したユーザー名とパスワード

このようにダッシュボード側のMySQL インターフェースがあれば、Cloud Hub 経由でANSI SQL を使って、Dynamics CRM をはじめ100+ のデータソースへの連携が可能になります。

<img width="583" alt="geckoboard-6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/8ad740d6-e94b-48ba-9a20-81be0440bb03.png">

［Connect］を押して接続を確立します。

### Geckoboard でダッシュボードを作成
接続確立後にSQL クエリを入力する画面が出ます。Geckoboard では、データセットを一度ロードする方法ではなく、ダッシュボードのWidget 毎にSQL のクエリでデータ指定を行います。

この例では、Dynamics CRM のOpportunity エンティティからName to
TotalAmount カラムを取得してビジュアライズします。データの絞り込みはWHERE 句、並べ替えにはORDER BY が使えます。

```SQL
SELECT Name, TotalAmount from Opportunity ORDER BY TotalAmount DESC
```

![geckoboard-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/ae65a59d-00d8-fd20-ca01-852d06a0bba7.png)

また、カードWidget を使う場合には、数値を返すSQL が必要です。ここではDynamics CRM のCampaign エンティティからTotalActualCost を集計します。

```SQL
SELECT SUM(TotalActualCost) from Campaign
```

こんな感じで簡単にダッシュボードが作成できます。
![geckoboard-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116843/a6737b7c-4ca4-3808-068c-f19d31ebcf1d.png)


##まとめ
このようにGeckoboard は、標準SQL をベースにWidget を作ります各種SaaS およびNoSQL のインターフェースをSQL に変換するCloud Hub（[https://www.cdata.com/cloudhub/](https://www.cdata.com/cloudhub/)） サービスとは大変相性が良いと言えるでしょう。