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

Version 6

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

    今回はTableauTabpyの入出力を確認しつつ、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に計算を実行させる計算式を作成します。

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

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

     

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

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

    以下のように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 メソッドでARRAYListに変換してTableauに返す

    Listに変換するのはTabpyのお約束としてそういうものだとご理解ください、Listに変換しないとエラーになってしまいます)

     

    ARRAYにしたり、LISTにしたりと少し面倒くさいところもありますが、基本は同じです。

     

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

     

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

     

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

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

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

     

     

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

     

     

     

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

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

     

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

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

     

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

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

     

     

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

     

     

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