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

投稿者:

今回は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:いろいろなクラスター分析)

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です