Skip to main content

Tableau V10.2 の発表とともに、TableauのPython連携(Tabpy)が正式発表されました。

今回はTableauとTabpyの入出力を確認しつつ、Pythonで簡単な足し算を実行します。

 

Tabpyの導入方法については、以下の記事で紹介しましたので、参照ください。

Tableau + Python 連携 (Tabpy) を使ってみよう!(Tabpy導入編)

 

入出力について、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 - Tableau + Python 連携  を使ってみよう!(その2:入出力の仕組みと簡単な計算)

実際にTabpyに計算を実行させる計算式を作成します。

サンプルデータストアから、SalesとProfit を足してみます。

以下のようにPython コードを含む計算式を作成します。

 

pastedImage_1.png

結果はこのようになります。

 

pastedImage_2.png

計算式の内容を解説します。

 

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にしたりと少し面倒くさいところもありますが、基本は同じです。

 

もう一つ例を挙げて動きを確認しましょう。

 

惑星の半径がわかっているときに、その惑星の体積を求めてみます(惑星が球だと仮定します)

 

pastedImage_3.png

球の体積は 4/3 π r^3 となりますので、

以下のような計算式を書いて求めます。

円周率は Numpyをインポートして pi で利用できます。

 

pastedImage_4.png

 

惑星の半径と体積の関係を散布図に表します。

 

pastedImage_5.png

 

以上、Tabpyを利用する上での基本的なお約束を簡単な計算で紹介しました。

複雑なPython の計算でも応用できる基本になりますので、ご参考ください。

 

※ TabpyにおけるPythonのコーディングに関してはサポートの範囲外となります。

またサポートもTableauに特化した領域に限定されますのでご留意ください。

 

以下関連リンクも参照ください。

Tabpy - Tableau + Python 連携  を使ってみよう!(その1:Tabpy導入編)

 

Tabpy - Tableau + Python 連携  を使ってみよう!(その2:入出力の仕組みと簡単な計算)

 

Tabpy - Tableau + Python 連携  を使ってみよう!(その3:いろいろなクラスター分析)

0/9000