MicroStrategy DesktopにImpalaを接続する

[MicroStrategy Desktop](https://www.microstrategy.com/jp/get-started/desktop)は、マイクロストラテジー社が提供するBIツールである。最近**無償**で利用できるようになった。
他のBIツール無償版と比較すると、以下の点が優れている。

- 各種DBに接続可能
- ローカルにデータを保存可能

なので、このMicroStrategy Desktopをそのまま業務利用できてしまう。
MicroStrategyは、一般的な時系列グラフはもちろん、ネットワーク図やサンキーダイアグラムといった複雑なビューも簡単に作成できる。

![Microstrategy - Impala デモ2 空港別発便数の推移(年別).png](https://qiita-image-store.s3.amazonaws.com/0/17749/781051ae-f0bc-b120-3619-d8826998341d.png)

![Microstrategy - Impala デモ5 空港間のグラフ.png](https://qiita-image-store.s3.amazonaws.com/0/17749/31d9ab16-6420-2e4c-4178-51b428aabba6.png)

![Microstrategy - Impala デモ6 SFOから他の空港へのフライト数の流量(サンキーダイアグラム).png](https://qiita-image-store.s3.amazonaws.com/0/17749/60ce9eb0-c3df-0c92-a5e6-b00bbad1d1f6.png)

本記事では、Mac版の MicroStrategy Desktopを使ってOSSのSQL-on-Hadoopエンジン[Apache Impala (incubating)](http://impala.apache.org/)(以下Impala)に接続する方法を紹介する。Impalaについては[こちらの記事](http://qiita.com/shiumachi/items/f6d83194d48150ead694)も参照のこと。


# 環境

- MicroStrategy Desktop 10.6.0
- CDH 5.9.1
- Impala 2.7.0+cdh5.9.1+0
- MacOS X 10.11 El Capitan

# 必要なソフトウェアのダウンロード

## MicroStrategy Desktop 

以下のURLからダウンロードする。

https://www.microstrategy.com/jp/get-started/desktop

ダウンロードしたらインストールする。


## Impala JDBC Driver のダウンロード

以下のURLからImpala JDBC Driver をダウンロードする。

http://www.cloudera.com/downloads.html

ダウンロードしたら解凍する。


# MicroStrategy Desktop 上で Impala JDBC Driver を追加する

MicroStrategy Desktop を起動し、 **新規にデータを追加** を選択する。

![MicrostrategyからImpalaに接続1 新規データを追加.png](https://qiita-image-store.s3.amazonaws.com/0/17749/1dbf0e24-cd5f-8471-4952-d0c962edf19e.png)

データベース選択画面で、 **Hadoop** → **Impala** を選択する。

![MicrostrategyからImpalaに接続2 データベースを選択.png](https://qiita-image-store.s3.amazonaws.com/0/17749/4de6c4b8-e784-f44a-e497-c9b799d3c297.png)

インポートオプションを選択する必要があるが、ドライバの追加が目的なのでどれを選んでもいい。

![MicrostrategyからImpalaに接続3 インポートオプションを選択.png](https://qiita-image-store.s3.amazonaws.com/0/17749/101b3241-c13c-d541-025e-1609826ad8a7.png)

**データソース** → **追加…** を選択し、データソース追加画面に移る。(画面省略)
データソース画面で、 **ドライバーを追加** を選択する。

![MicrostrategyからImpalaに接続5 データソースを選択(ドライバ追加前).png](https://qiita-image-store.s3.amazonaws.com/0/17749/5af1f62a-123f-46de-f700-f55212d7e1f4.png)

ファイル追加画面に移るので、先程解凍した Impala JDBC Driver 内に含まれる**全てのjar**を追加する。

![MicrostrategyからImpalaに接続6 ドライバの追加.png](https://qiita-image-store.s3.amazonaws.com/0/17749/dc00d412-338a-4bb4-cd7e-06cdca1e02a7.png)

このとき、つい `ImpalaJDBC41.jar` だけ選択してしまいがちだが、**絶対にやってはいけない**。
このjarだけ追加しても動かない上、MicroStrategy上では登録完了扱いとなるため、アプリケーション上からの修正ができなくなるし、単にアプリケーションの再インストールを行っても修正できなくなる。
この状態で接続を試みると、以下のようなエラーが発生する。

```
(ﾃﾞｰﾀﾍﾞｰｽ ｴﾗｰ<3>: JdbcConnectionWrapper::Connect failed. Disconnected. 
Error type: Unknown exception. 
Jdbc operation attempted: Connect. 
Error Message:org/apache/thrift/transport/TTransport.ﾃﾞｰﾀﾍﾞｰｽ ｴﾗｰ<3>: 
JdbcConnectionWrapper::Connect failed. Disconnected. 
Error type: Unknown exception. 
Jdbc operation attempted: Connect. Error Message:org/apache/thrift/protocol/TProtocol.
```

万一この状態に陥った場合は、 `${HOME}/Library/Containers/MicroStrategy.MicroStrategy` を削除することでユーザ固有の情報を初期する。
これにより、ドライバの再インストールが可能となる。

ドライバをインストールしたら、**ホスト名:ポート番号**、**ユーザ名**、**パスワード**を入力する。
ユーザ名とパスワードは必須項目だが、認証なしで動かしている場合本来は必要ない。適当な文字列を入力しておけば問題ない。
最後の**データソース名**はMicroStrategy上の管理名なのでDB名とは関係がない。

![MicrostrategyからImpalaに接続7 データソースを選択(ドライバ追加直後).png](https://qiita-image-store.s3.amazonaws.com/0/17749/2bba935a-52c2-8e8e-cef6-98a5ecf05f2a.png)

これで、ImpalaのDBやテーブルにアクセスできるようになる。

![MicrostrategyからImpalaに接続8 テーブルからインポート(ドライバ追加後).png](https://qiita-image-store.s3.amazonaws.com/0/17749/b48b8000-3c3b-81ce-2503-8f8b4fece626.png)