[Tableau Tips #1] Advanced Analytics - Tabpy環境構築

最近よくAdvanced Analyticsというキーワードを耳にしているので、調べてみたらGartnerのIT用語集で以下のように定義しています。
https://www.gartner.com/it-glossary/advanced-analytics 
を参照

各BI製品にもAdvanced Analytics対応しているようです。
QlikはAdvanced Analytics Connectorをリリースし、Tableauは2016年のSummitですでにTabpyのベータ版を発表していました。

* Qlik - [Introducing Qlik Advanced Analytics Integration](https://community.qlik.com/blogs/qlikviewdesignblog/2017/07/24/what-is-qlik-advanced-analytics-integration)
* Tableau - [Introducing TabPy: Data Science with Python in Tableau](https://tc16.tableau.com/learn/sessions/3564)

##概要
Tabpyの環境を構築して、TableauでAdvanced Analyticsをやってみたいと思います。

##環境
[Python開発環境構築 ー PyCharm × Anaconda](https://qiita.com/tanj/items/d88a3084a092bb106a97)
で構築したPython開発環境を利用し、その上でTabpyの実行環境を構築します。

##構築開始
Anacondaはすでに存在するので、そこに仮想環境を作成し、Tabpyをインストールするイメージです。

###Tableau-Python-Server仮想環境作成
Tableau-Python-Serverという名前の仮想環境をconda createコマンドで作成します。

```shell
conda create --name Tableau-Python-Server python=2.7 anaconda
```

![anaconda_create_1.jpg](https://qiita-image-store.s3.amazonaws.com/0/191079/04c23086-fb50-6839-0e15-ed8c257e2de2.jpeg)

インストールするパッケージがずらりとリストアップされます。そしてProceed ([y]/n)?が聞かれますので、yをタイプしEnter押せば構築が続けます。
![anaconda_create_2.jpg](https://qiita-image-store.s3.amazonaws.com/0/191079/6dd8b2ef-068e-af65-b18f-bbf7adbea489.jpeg)
仮想環境構築完了
![anaconda_create_3.jpg](https://qiita-image-store.s3.amazonaws.com/0/191079/58e72e9b-dcc3-e5c5-ed96-67bcf5bf3626.jpeg)

Anaconda Prompt(Tableau-Python-Server)が追加されます。Jupyter Nodebookも作られます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191079/ddc3f795-779f-2929-6852-08097c6ac12e.png)

###Activate Tableau-Python-Server
Commond Promptを開き、conda info -eで仮想環境の状態を見れます。

```shell
conda info -e
activate Tableau-Python-Server
conda info -e
```
でActive仮想環境がTableau-Python-Serverに移ったことを確認できます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191079/68eb2c20-4daf-b459-3190-35b944d6359b.png)

###tabpy-serverインストール
```shell
pip install tabpy-server
```
でtabpy-serverをインストールします。
![anaconda_tabpy_2.jpg](https://qiita-image-store.s3.amazonaws.com/0/191079/dd0ee669-8c1d-3041-4053-ed51350189b5.jpeg)
完了したらプロンプトが戻ってきます。
![anaconda_tabpy_3.jpg](https://qiita-image-store.s3.amazonaws.com/0/191079/e5ba5a1d-d5c8-8a52-f379-44bf14721386.jpeg)

以下ディレクトリに環境が作成されます。
C:\ProgramData\Anaconda3\envs\Tableau-Python-Server\Lib\site-packages\tabpy_server
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191079/e49da2a6-cd05-b365-9d70-b2561e74ef62.png)

###tabpy-server起動
startup.batをダブルクリック（or 右クリックの管理者として実行）しますと、
tabpy-serverが起動されます。
![anaconda_tabpy_5.jpg](https://qiita-image-store.s3.amazonaws.com/0/191079/14736ca4-751a-f028-ebcd-4aa17e468efe.jpeg)

##接続確認
早速Tableau Desktopから接続してみます。

###外部サービス接続の管理
Tableau Desktop -> Menu -> ヘルプ -> 設定とパフォーマンス -> 外部サービス接続の管理　を開きます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191079/bcb867b4-dea3-2a74-61db-adb140939239.png)

外部サービス接続画面で、サーバのIPとポート（9004）を入力して、テスト接続を押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191079/b1533367-636a-eefd-bbcc-eb5124de6a24.png)

###接続エラー
早速接続エラーになります。
![tableau_tabpy_1.jpg](https://qiita-image-store.s3.amazonaws.com/0/191079/0db4e4f3-0922-9923-1cbf-c26c90c6fe34.jpeg)
TabpyサーバはAWS上のEC2インスタンスとして立てているので、セキュリティグループでポートを開ける必要があります。また、Windowsサーバ内のファイアウォールのポートも併せてインバウンド許可します。

###ポート&ファイアウォール設定
EC2 - 単にセキュリティグループに9004を追加するのみ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191079/fe9c2a5b-6787-55e1-012a-e3e0b4680102.png)

Windows - コントロールパネル -> Windows ファイアウォール -> 詳細設定を押します
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191079/801aa000-c7c3-dc53-4db0-9f032c1dfc05.png)
受信規則 -> 新しい規則を押して、以下のように追加します。
![tableau_tabpy_5.jpg](https://qiita-image-store.s3.amazonaws.com/0/191079/132277eb-646c-4397-f93a-30e86c81e92e.jpeg)

###再接続
![tableau_tabpy_3.jpg](https://qiita-image-store.s3.amazonaws.com/0/191079/2e150d3f-2b6a-688b-f8ba-96dffac7806d.jpeg)

##環境構築完了
これでAdvanced AnalyticsするためのTabpy環境を構築完了です。
次回は相関関係をダイナミックに計算するAdvanced Analyticsをやってみます。