見出し画像

Google Colaboratory を TabPy サーバーとして動かす

はじめに

Tableau の分析拡張機能のひとつとして,TabPy サーバーを立て,Tableau Desktop / Server と接続することで,計算フィールドを介して Python コードを実行することができます.

TabPy のリファレンスでは,ローカル上で TabPy サーバーを実行する方法が紹介されています.

もちろんこれでよいものの,ローカル環境上に Python の環境構築が必要となるため,Python の環境構築に慣れていない人は躓くポイントかもしれません.

一方で,Google アカウントのみで Python の実行環境をブラウザから利用できる Google Colaboratory というサービスが存在します.

Google Colaboratory では,データ分析に関連するライブラリは一通りインストールされており,データ分析における大抵の用途では十分な機能を有しています.

そこで,今回はこの Google Colaboratory を TabPy サーバーとして利用する方法をご紹介します.

免責事項

以降の手順は,セキュリティのベストプラクティスに必ずしも沿ったものではなく,安全性を保証するものではありません.また,一時的とはいえ TabPy サーバ環境をグローバルに公開するため,計算フィールドを介して不正なプログラムを実行される可能性も存在します.

この記事の閲覧者が本記事の情報を用いて行う行動について,筆者はいかなる場合も一切の責任を負いません.

上記事項に同意する場合のみ,以降にご紹介する手順をお試しください.

Google Colaboratory を TabPy サーバーとして動かす

前提

  • Google アカウントを作成済みである

  • Tableau Desktop 2023.3 をインストール済みである

ステップ ①|Google Colaboratory で TabPy サーバーを起動する

Google Colaboratory 上で以下のコードを実行します.

# TabPy をインストール
!pip install tabpy -q

# トンネリングツール cloudflare tunnel client のインストール
# cloudflare tunnel client を使うと,サーバに対する Public な URL を自動的に生成してくれる 
!wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
!dpkg -i cloudflared-linux-amd64.deb

# TabPy をバックグラウンドで実行
%%bash --bg
tabpy --disable-auth-warning > debug.log 2>&1

# TabPy に関する 9004 番ポートに接続するように,トンネリングを実行
!cloudflared tunnel --url localhost:9004

# 表示されたログの「Your quick Tunnel has been created! Visit it at (it may take some time to be reachable):」の下にある URL を控えておく

Google Colaboratory でのコードも以下に公開しています:

コードの大まかな流れは以下のとおりです.

  • pip で tabpy をインストール

  • Cloudflared Tunnel Client https://github.com/cloudflare/cloudflared をインストールする

  • TabPy をバックグラウンドで実行する(このとき,TabPy デフォルトの 9004 番ポートでアクセスを受け付けるものとする)

  • Cloudflared Tunnel Client を実行し,localhost:9004 へのアクセスを行うことができるパブリックな URL を発行する

コードを実行すると,「Your quick Tunnel has been created! Visit it at (it may take some time to be reachable):」という文章が出力され,その下に URL が記載されます.この URL をメモしておきましょう.

ちなみに,セルは実行中を表す状態のままで構いません.

ステップ②|Tableau Desktop で TabPy サーバーに接続する

Tableau Desktop を起動し,「ヘルプ」から「言語とパフォーマンス」,「分析の拡張機能接続の管理…」の順にクリックします.

接続タイプの選択は,「TabPy」をクリックします.

その後,次のようにチェックあるいは記入します.

  • 「SSL が必要」にチェック

  • ホスト名は,Google Colaboratory のコード実行した際に表示された URL で https:// 以降のものを入力

  • ポートは 443 を入力

以上のチェック&操作が完了したら,右下の「保存」をクリックします.

ステップ③|TabPy サーバーとの接続をテストする

TabPy サーバーとの接続をテストしてみましょう.同じ画面で「テスト接続」をクリックします.

問題なく接続できていれば,以下のポップアップが表示されます.

これで,TabPy サーバーとの接続は完了です.あとは,計算フィールドを介して,Python スクリプトを呼び出してみましょう.

ステップ④|分析拡張機能を利用する

今回は,Tableau のサンプルデータであるサンプル - スーパーストアを利用します.シンプルな利用テストとして,売上を 1.1 倍して税込売上を求める計算フィールドを作成してみましょう.

Python コードの返り値が整数であることを表す「SCRIPT_INT」関数の第一引数に文字列として,Python コードを挿入します.Python コードに渡されてた値は,Python コード上では _arg1 として表現されます._arg1 に相当する集計値は,「SCRIPT_INT」関数の第二引数に渡します.

気をつけるべきポイントとして,ディメンションごとの集計がリストとして _arg1 に渡されます.出力も同じ要素数のリストとしないと,税込売上の計算結果として不適切になります.

上記の計算フィールドを使って,カテゴリ別の売上と税込売上を表示したのが以下の Viz です.

10 % 分増加しており,所望の計算結果が得られていることが確認できました.

まとめ

今回の記事では,Google Colaboratory を TabPy サーバーとして利用する方法をご紹介しました.データ分析の環境が揃っており,手軽に利用できる Google Colaboratory を Tableau の中で利用することで,より複雑な計算を行ったり,仮説検定を実行したり,機械学習/深層学習の予測結果を用いて集計するといったことも可能になるでしょう.

是非,他の記事やnote更新もチェックしてくださいね!

この記事が気に入ったらサポートをしてみませんか?