TabPyはTableauの拡張分析機能で、Pythonの潤沢なライブラリを利用したリアルタイムな計算が実現できます。しかしながらPythonを利用するとなると、利用するハードルが低くないのは確かです。
そこでこの記事では、細かいコード抜きでTabPyの実装イメージを掴めるよう、導入の手順を3つのステップにまとめて解説します。
「TabPyは名前だけ聞いたことがある」
「具体的に動き方を知りたい」
というような、非エンジニアの方はぜひご一読ください。
TabPyとは何か
TabPy (Tableau Python Server) は、ユーザーが Tableau の表計算を介して Python スクリプトと保存された関数を実行できるようにすることで Tableauの機能を拡張する、分析拡張機能の実装です。
ポイントは以下の3点です。
- TabPyは分析拡張機能の一種
- Tableauから変数をTabPyに渡して、TabPyから計算結果を受け取る
- TabPyにはあらかじめ作った計算式(関数)をアップロードしてTableau上で再利用できる
TabPyはこうやって動いている
TableauからTabPyに対して変数を送ると(①)、TabPyServerを通して計算された値が返ってきてTableauの中で表示されます(②)。
どうしてTabPyが必要なの?
なぜTabPyが必要になるのかというと、Tableauそれ自身にはPythonを実行する機能がないためです。
TabPyを介して別のPythonを使える環境を使ってプログラムを実行する仕組みになっています。TabPyはTableauとPython実行環境の仲介役の様な役割を果たしています。
TabPy実装の3STEP
TabPyを実装する手順は以下の3ステップです。
- Step1. TabPyを起動しよう
- Step2. TableauとTabPyServerを繋げよう
- Step3. TableauからPythonを実行させよう
※Pythonの開発環境をお持ちでない方はStep0 Python環境構築から行ってください。
Step0. Python環境構築
今回の開発をするにはPythonの開発環境を設定する必要があります。
※すでに構築済みの方→pipでtitlecaseというライブラリのインストールをしてから進めてください
0.1. Pythonの公式ウェブサイトにアクセス
Python公式ウェブサイトにアクセスし、最新版のPythonをダウンロードします。
0.2. インストーラーを実行
ダウンロードが完了したら、インストーラーをダブルクリックして実行します。
インストーラーが起動したら、赤枠の場所のチェックを付けてから「Install Now」をクリックしてインストールを進めます。
これでPythonのインストールが完了しました。
コマンドプロンプトやターミナルで、
python --version
と入力して、インストールされたバージョンが表示されることを確認してください。
0.3. ライブラリのインストール
Pythonの入力が確認できたら、
pip install titlecase
と入力して、今回の開発で用いるtitlecaseライブラリをインストールしてください。
Step1. TabPyを起動しよう
Pythonが使える状態でCMDを開き、以下のコマンドからTabPyパッケージをインストールしましょう。
pip install tabpy
完了後以下のコマンドでTabPyを起動します。
tabpy
入力後はTabPyが実行状態になります。いくつかのログが表示されますがポート番号が9004であることを抑えておきましょう。
Step2. TableauとTabPyServerを繋げよう
ヘルプ > 設定とパフォーマンス > 分析の拡張機能の接続管理 をクリック
このような画面が現れたら、localhostと9004と入力されている事を確認
※テスト接続をクリックしTabPyとの接続を確認できます
Step3. TableauからPythonを実行させよう
次のようなカスタム計算フィールドを使ってTabPyと通信します。
例 : 英語の文字列を単語ごとに大文字から始める計算式tabpy_calc
APPENDIX
APPENDIX1 -「SCRIPT_」から始まる関数
Pythonプログラムの計算結果のデータ型(整数、文字、Boolean、小数)に応じて4種類の関数を切り替えましょう。
- SCRIPT_INT()・・・戻り値が整数
- SCRIPT_STR()・・・戻り値が文字
- SCRIPT_BOOL()・・・戻り値がBoolean(TrueかFalse)
- SCRIPT_REAL()・・・戻り値が小数
APPENDIX2 – 戻り値のルール : tolist()へ変換
TabPyを調べていると、「戻り値に対して tolist()を行いリスト型にする事はお約束事のようなものだ。」という表現に何度か出会いましたが、公式のGitHubを確認してみると以下の記載がありました。
GitHub : 戻り値についての記載(抜粋)
① TabPyで計算された結果は1列かつ変数と同じ行数である必要があります。
原文 . Tableau expects the SCRIPT to return a single column that has either a single row or the same number of rows as it passed to TabPy.② Pythonコードが1次元配列なのにエラーを起こすなら .tolist() でリスト型に変換すると良いかもしれません
原文 . If your Python code returns a one dimensional array but TabPy is failing to serialize it to JSON, you may
want to convert it to a list as shown in the example below.
1列で返ってくるならばいいけれど、エラーが出る時はtolist()メソッドで明示的にリスト型に変換しましょうとの事です。安心の為のお作法という理解で大丈夫そうですね。
APPENDIX3 – TabPyの実行プロセスの終了方法
コマンドプロンプトにて「Ctrl + C」を入力すればTabPyのプロセスは終了します。
まとめ
お疲れ様でした。本記事を通してTabPyのイメージを掴んで頂ければ嬉しいです。
日本語では情報量はまだまだ少ない分野なので、とくに非エンジニアの方にはハードルがあると思います。しかし、TabPyを扱えるようになれば、TableauのユーザビリティとPythonの専門性をかけ合わせた、より複雑なデータ分析が実現できるので夢が広がりますね。
最後まで読んで下さりありがとうございました。
参考情報
書籍
Tableauで始めるデータサイエンス |岩橋 智宏|今西 航平| 増田 啓志
GitHub
https://github.com/tableau/TabPy
Tableauヘルプ
分析拡張機能を使用した式の受け渡し – Tableau
Tableau公式ブログ(English)
How to build advanced analytics applications with TabPy
Leverage the power of Python in Tableau with TabPy