🎉

Tableauデータソースに存在しない値を表示させる方法

2024/01/13に公開

概要

組織の中で働いていると、Tableauのデータソースを気軽に更新できない場合も多い。項目を追加するとなったら専門の部署に要件を出して暫く待たなければならないかもしれない。
そこで、もしワークブックの編集だけで気軽にダッシュボード上に項目を追加表示できたらどうか(例えば目標値とか)。場合によっては便利かもしれない。今回はそんなお話である。

計算フィールドを作ればよいのでは?

それは確かにそうである。それで対応できるならそれに越した事は無い。しかし例えば上司にこう頼まれたらあなたはどう対応するだろう。
「このダッシュボードに店舗毎の目標値表示させたいんだけどさ、データソースは今のままで、ワークブックの編集だけでパパっとどうにかできない?1時間後の会議で使うから急ぎで!目標値超えた店舗のグラフは色変えといてね。表示させたい数字はExcelで用意してあるからさ、送るから頼むね!」

※店舗ID(StoreID)は本体データソースとの結合キーに使えるものとする。

・・・いくつか考えられる策はある。

  1. 本体データソースとブレンドして使用する。
    これがまずは最有力だが、ブレンド機能を利用するといくつか制限が掛かるので、それに引っ掛からないか注意が必要だ。
    データ ブレンドのトラブルシューティング
    あと場合によってはブレンドするとかなり重くなる事もあるので、パフォーマンスが必要以上に劣化しないかも注視する必要がある。
  2. CASE式でひたすら生の値を並べる

    …これはつまり、Excelの中の値をコピペしてひたすらCASE式に並べて書くという原始的な方法である。中々面倒だし、更新するとなっても手間が掛かる。
3. パラメーター + SPLIT関数を使う

この記事で伝えたい方法はこれである。
これを使えば、一旦ワークブックに表示させてしまえばダッシュボード上だけで値の微修正さえも行う事ができる優れものである。
リテラルであればただのパラメーターでも表示できるが、行に対応した値を表示させたい場合は難しい。しかしこの方法を用いた計算フィールドを作ればそれが可能になる。

パラメーター + SPLIT関数

いきなり全容を表示するとこうだ。

これで、表示されているパラメーター([p TargetValue])の値を変更すると表の数字も簡単に変えられる。Tableau Serverにアップした状態でも同様に操作可能だ。

店舗は5行しか無いのに、計算フィールドでは何故9個書いているの?と思うかもしれない。つまり伝えたいことはこうだ。計算フィールド上では余分に書いておいても悪さはしないので、書けるだけガーッと書いておけば、後で店舗が増えたとしても自動的に対応できるという事である。

あとは上司の要件通りにグラフ部分を作り上げれば完成だ。
パラメーターが空の時は以下のような見た目だが、

パラメーターを入れると目標値グラフに様変わりする。

今回このダッシュボードはTableau Publicにも上げているので、是非触ってみてほしい。
https://public.tableau.com/app/profile/takashi.katsumoto/viz/HowtodisplayvaluesthatdonotexistintheTableaudatasource/Dashboard
どうだろうか。この方法であれば、例えば会議をしながら「うーん、目標値もうちょっと修正した方がよくない?」となったとしてもその場でパパっと手を入れて修正版を見せる事ができる。

・・・しかし、まだあなたには言いたいことがあるだろう。

「パラメーターに数字入れるの面倒くさくない?」

ふむ。それはもっともだ。
だがそれは運用を工夫する事によりカバーできる。

運用の最適化

区切り文字(#)を入れつつ数字を羅列する作業を完全に手作業でやるのでは、幾分手間が掛かりスマートとは言えないだろう。そこで上司のExcelに簡単なボタンを仕込んであげるとよい。

これでボタンを押すと、

45#63#37#72#85

この文字列がクリップボードに入ってくれる。
あとはただパラメーター欄にペーストするだけ!
数字を変えたいとなった場合はExcel上で変更した上で再度ボタンを押せばよい。
これなら幾分更新も楽だろう。
これはボタン内に非常に簡単なVBAコードを仕込む事により実装できている。

VBAはサッパリ分からないがそのExcelだけもらえないだろうか?

可能である。GitHubから自由にダウンロードできるようにしておいた。
https://github.com/dirsense/Set_targets_for_Tableau

Excelの行や列項目は自由に変更していただいて構わないが、パラメーターに設定する文字列は一番右の列の全行をボタン押下時に取得するようになっているので、そこだけご注意いただきたい。

「ついでに計算フィールドも自動で生成してくれない?」

そんな声も聞こえてきそうである。
そこまで難しい話ではないのでついでに実装しておいた。

ボタンを新たに一つ加え、押してフォームを表示させたらフィールド名とパラメーター名を入力後「Generate & Copy」ボタンを押したら計算フィールドの文字列がクリップボードにコピーされるようにした。画像の例ではCASE式のWHEN句が5つ生成されているが、これはExcelに入力した行数分生成されるので、仮に10行入力したら10個のWHEN句が生成される。

「でもこれ毎回開く度にパラメーターリセットされるのしんどくない?」

大丈夫!組織で働いている皆さんであればTableau Serverを利用されているかと思うが、それにはカスタムビューという便利機能がある。簡単に言うとユーザーが編集したビューの内容を保存しておける機能だ。なのでパラメーターを設定後にカスタムビューとして保存しておけば、次に開いた時には設定済みの状態で毎回表示させる事ができる。
カスタムビューの使用

最後に

どうだろうか。運用の工夫と合わせて評価した場合、中々使えるシステムと言えないだろうか。
是非色々な場面で使っていただき、広めていただけたら幸いである。
あるいは、もっとこういう事できない?的なアイデアでも、ただの感想でも、何かあれば是非気軽にコメントをお寄せ下さい!

Discussion