Tableauで計算フィールドの複数ポップアップを実現する

2023/03/16に公開

はじめに

Tableauでは計算フィールドを一度に一つしか表示できない。

Tableau経験者ほどその仕様に慣れ過ぎて、特に違和感を感じない方も多いかもしれない。
だが、恐らく誰もが最低一度は(人によっては数えきれない程!)
「なんで一つしか表示できないんだ!並べて見たいのに!」
と思った事があると思う。
実際周りの人にも聞いてみたが、やはりみんな同じ感情を抱いているようだった。
次はコミュニティの ideas を見てみる。
・・・複数ウィンドウを実現してほしいという趣旨の要望で溢れかえっているではないか!
私がざっと検索した限りではこれだけある。
Multiple Windows Open At Once In Desktop
Allow multiple calculated fields to be open at once
Have multiple Calculated Fields windows open at same time
(この中の一つに私のコメントもある)
一番古いのだと9年以上前から議論されているのである。
だがステータスはどれもOpenのままで、本体に実装される気配すらない・・・。

実際どうする?

どうしても同時に見たい時は仕方ないので、メモ帳にコピペしたり、スクショを撮ったものを比べてみたりする事もある。まあ言うまでもないが、効率は悪いしどうにも不便な方法である。
しかし待てど暮らせど、本体には当分実装されないだろう。
ではどうすべきか。

分かった。作ろう。

簡単な事だった。作ればいいのだ。自分で!
勿論、本体に搭載されるほどのクオリティで作れるはずもない(そんな環境もない)。
だがそこまでする必要はないのだ。あくまでも計算式解析の補助としての役割を果たすだけで十分と考えれば、方法はいくらでもある。

Tableau Document APIの活用

Tableauのワークブックを解析して、色々な情報を取得できるAPIが実は公式で用意されている。
Tableau Document API
何と素晴らしいAPI!これがあれば何でもできるではないか!
と最初の内は思うだろう。・・・だが最初に言っておくと、このAPIで取得できる情報には限りがあり、あらゆる情報を自由自在に取れるという訳ではない。使っていくと分かるのだが、やや深めな情報(フィルター、パラメーター、カードの詳細など)を取ろうとすると、それを取得する為のプロパティが全然用意されていない事に気付く。そういった情報が必要な場合はXML形式のテキストを直接パースしてあらゆる手段で取得する必要がある。
だが幸いな事に、今回の要件(計算式解析補助)で取りたい情報は全て、このAPIから取れる情報で賄えるので、XMLをパースする必要はない!
(XML解析についてもかなり深めな研究をしたので、機会が有ればそういう方向の記事を書く事もあるかもしれない)
という事で今回のツール開発は、このAPIを使って取得したい情報をPythonで取得する所から開始するのである。そして使いやすいようにプログラムをGUI化し、ユーザビリティを損なわない形で利用できれば目的達成という事になる。

まずは使ってみよう

とは言え、ツールそのものの実装にはさほど興味がない方も多いと思うので、まずはそのツールがどういうものなのか、使えるものなのか、実際に触ってみてもらいたいと思う。
その上で内部の実装に興味がある方は、githubでソースコードを公開しているので、解析したり、カスタマイズしてもらえたら幸いである。
https://github.com/dirsense/Tableau-Calc-Viewer

使い方含め、実際にどういう動きをするかというのは先に動画で見た方がイメージを掴みやすいと思うので、まずは以下のyoutube動画をご覧いただきたい。1分25秒の短い動画ではあるが、この中でツールの動きの全てが収められている。
https://www.youtube.com/watch?v=7o7OjOqTC5A
※動画の中でツールのexeファイル名が「Tableau Calc Analyzer」となっているが、これは旧名称で、今は「Tableau Calc Viewer」という名前に変更している。

使い方

動画を見ただけでもおおよその使い方は分かったかもしれないが、テキストでも載せておく。

  1. githubからzipファイルをダウンロードし、任意の場所に解凍
  2. distフォルダの中にexeファイルがあるので、同じ場所に解析したいTableauワークブック(twb or twbx)を配置
  3. 解析したいワークブックを開く
  4. exeファイルをダブルクリックで起動
  5. 「Scan」ボタンを押し、「Scan Complete」と表示されることを確認する
  6. 開いたワークブック内で任意の計算フィールドを開く
  7. ポップアップさせたい計算フィールドにカーソルを合わせ、F3キーを押す

注意点
・Tableauの計算フィールド内では、マウスカーソルを合わせた状態でF3を押す
・ツールでポップアップさせたウィンドウでは、テキストカーソルを合わせた状態でF3を押す
・手順2でexeと同じフォルダに (twb or twbx) を配置させなくても、ツールの「…」ボタンを押してファイル選択ウィンドウで直接指定してもOK
・手順3と4はどの順番で実施してもOK(元々開いてあっても問題ない)
・ツールでポップアップさせたウィンドウを一つ一つ閉じる場合は右上の×ボタンで閉じる。全て一気に閉じたい場合はF4で閉じる
・githubでzipのダウンロードは以下の画面から可能

もし何か不明な点があれば、コメントなどでメッセージいただければお答えします。

終わりに

Tableauは素晴らしいBIツールだが、細かい所で要望が行き届いていない所も多い。けれども、提供されているAPIなどを使えば補助的なツールを作る事で実現できる事も多々ある。TableauのAPIは色々な種類があり、可能性は無限大である。
APIで実現できない事も、ファイルを直接解析(XMLパースなど)すれば実現出来る事も多い。
「なんだできないのか」で終える前に、出来る事を如何に模索するかというのが肝かと感じた次第である。

Discussion