今回はTableauとTabpyの入出力を確認しつつ、Pythonで簡単な足し算を実行します。
Tabpyの導入方法については、以下の記事で紹介しましたので、参照ください。
Tableau + Python 連携 (Tabpy) を使ってみよう!(Tabpy導入編)
https://community.tableau.com/docs/DOC-10160
入出力について、Tableau + R連携と考え方はほぼ一緒になります。
Tableau の計算式に書かれたPython スクリプトをTabpy サーバーに送信し、Tabpyサーバー上で実行されたPython スクリプトの出力をTableau が受け取ります。
Tableauの外部接続サービスの設定で ポート9004 を指定してTabpyサーバーに接続します(Rservとの切り替えはポート番号で行います。)
◆ Tableau+Python 連携では下の流れで処理が行われます。
1.TableauからTabpyサーバーに入力データを送る
(表計算の集計がベクトルとしてTabpyに送られます)
2.事前に書かれたPythonスクリプトにしたがってTabpyサーバーに計算をさせる
3.TableauがTabpyサーバーから計算された結果を受け取って新しいメジャーまたはディメンジョンとする
(このときTableau からの入力とTabpyサーバーからの出力の個数が同じである必要があります)
実際にTabpyに計算を実行させる計算式を作成します。
サンプルデータストアから、SalesとProfit を足してみます。
以下のようにPython コードを含む計算式を作成します。
実際にTabpyに計算を実行させる計算式を作成します。
サンプルデータストアから、SalesとProfit を足してみます。
以下のようにPython コードを含む計算式を作成します。
結果はこのようになります。
計算式の内容を解説します。
Tabpyサーバーを呼び出す計算式の基本書式は以下のようになります。
——————————————
SCRIPT_REAL ( …①
‘ Python コード (_arg1, _arg2 ) ‘ , …②
SUM([入力1]) , SUM([入力2]) …③
)
——————————————
① まず Python からの返り値のデータ型によって、SCRIPT_XXXを指定します。
整数型なら SCRIPT_INT, 実数ならSCRIPT_REALとなります。
② Pythonで実行させるコードを書きます。ここでTableau からの入力を受け取るために
_arg1 , _arg2 ・・・ と記載します。
③ Tableauから入力するメジャーを集計関数として指定します。
実際には、Pythonコードの中の _arg1, _arg2 にベクトル(値の列)として代入されます。
以上の枠の中でPython コードを記載します。
——————————————
import numpy as np …①
narg1 = np.array(_arg1) …②
narg2 = np.array(_arg2) …③
sum = narg1 + narg2 … ④
return sum.tolist() …⑤
——————————————
① 数列計算をするためにNumpyをインポートします。
これでベクトル同士の足し算が可能になります。
Pythonの数値計算ライブラリ NumPy入門
http://rest-term.com/archives/2999/
② Tableau からの入力(詳細レベルで区切られた[Sales]の数列)をARRAYに変換し、_arg1オブジェクトに格納する
③ ②と同様[Profit] の数列をARRAYに変換し、_arg2オブジェクトに格納する
④ ARRAYどうしの計算を行い、sum オブジェクトに格納する
⑤ tolist メソッドでARRAYをListに変換してTableauに返す
(Listに変換するのはTabpyのお約束としてそういうものだとご理解ください、Listに変換しないとエラーになってしまいます)
ARRAYにしたり、LISTにしたりと少し面倒くさいところもありますが、基本は同じです。
もう一つ例を挙げて動きを確認しましょう。
惑星の半径がわかっているときに、その惑星の体積を求めてみます(惑星が球だと仮定します)
球の体積は 4/3 π r^3 となりますので、
以下のような計算式を書いて求めます。
円周率は Numpyをインポートして pi で利用できます。
惑星の半径と体積の関係を散布図に表します。
以上、Tabpyを利用する上での基本的なお約束を簡単な計算で紹介しました。
複雑なPython の計算でも応用できる基本になりますので、ご参考ください。
※ TabpyにおけるPythonのコーディングに関してはサポートの範囲外となります。
またサポートもTableauに特化した領域に限定されますのでご留意ください。
以下関連リンクも参照ください。
Tabpy – Tableau + Python 連携 を使ってみよう!(その1:Tabpy導入編)
3件のコメント