見出し画像

フィルターアクションで予期せぬシート移動を防ぐには[DATA Saber挑戦 #Week9]

DATA Saber BridgeプロジェクトにApprenticeとして参加しています。
週一note更新目指します。

はじめに

この間のMakeoverライブにて、フィルターアクションが何度も取り上げられていたので、TableauでのViz作成時にフィルターアクションを使う場合に注意しておくべき点について記載していきます。

このページで伝えたいこと

Tableauのフィルターアクションは

フィルターアクションでソースシートに無いワークシートをターゲットにした場合、勝手にターゲットシートに遷移する

同時にフィルターアクションが作動した場合、
・フィルターアクションは名前順(降順)に実行される
最後に実行されたフィルターアクションのターゲットシートに遷移する

という挙動をします。

つまり、フィルターアクションを想定通り動かすためにはアクションの追加設定アクション名の変更(連番付与)をする必要があります。

注意事項

このページではフィルターアクションの具体的な設定方法について解説しません。Tableauの公式サイトなどをご参照ください。

使用環境は Tableau Desktop Public Edition 2022.4.0 です。

サンプルダッシュボードについて

今回はフィルターアクションで別シートのデータを絞るようなサンプルダッシュボードを作成しました。

[CASE1]で利用

Filter Action検証((OK)前提条件選択) | Tableau Public
Filter Action検証(売上ダッシュボード) | Tableau Public
カテゴリ、顧客区分、出荷モードを選び「GO!!!」を選択すると、
フィルターされた状態でグラフが表示される。
ちなみに「GO!!!」ボタンはナビゲーションオブジェクト。

[CASE2]で利用

Filter Action検証_AddSheet((OK)前提条件選択) | Tableau Public
Filter Action検証_AddSheet(地域別ダッシュボード) | Tableau Public

エントランスページである「前提条件選択」ダッシュボードでStep.1~Step.3の項目をそれぞれ選択した後に、売上ダッシュボード・地域別ダッシュボードをフィルターされた状態で初期表示させています。

メインダッシュボードはある程度フィルターされた状態で表示させることができるため、パフォーマンス改善のためにこのようなダッシュボード構成になることもあると思います。

[CASE1] 意図せず別シートに遷移してしまう

フィルターアクションの設定失敗例①

ただ、何も考えずフィルターアクションを1つだけ設定すると、フィルターアクションを動作させるだけで、すぐ別シートに移動してしまいます。

前提条件選択ダッシュボードのフィルターアクションは1つだけ設定。
ターゲットシートに「売上ダッシュボード」の全シートを設定する。
これで設定OK! と思いきや…
カテゴリ「家具」を選択しただけで、シート遷移してしまった。
これでは顧客区分と出荷モードのフィルターを選択できない。

なぜ想定通りの動作ができなかったのでしょうか?

ここには、「フィルターアクションでソースシート(つまりフィルター元ダッシュボード)に無いワークシートをターゲットシートにすると、フィルター処理だけでなくターゲットシートに遷移する処理も行われる」という仕様が隠れています。

以下のナレッジベースにもこの仕様の回避方法は記載されています。
しかし、ターゲットシート内のワークシートをソースシート側にも(見えないように)追加するという方法で、あまりスマートではありません。

(参考)How To Avoid Moving To Another Sheet When Using A Filter Action | kb.tableau.com

失敗例①の回避方法(一例)

「ソースシートに無いワークシートをターゲットシートにすると、ターゲットシートに遷移する処理も行われる」ということは、「同一ダッシュボード内のフィルターアクションを同時に設定すればシート遷移は発生しなくなる」ということになりそうです。

フィルターアクションをもう1つ(OK_02_選択_同一シート)設定した。
設定内容はこの通り。
ターゲットシートにすべてのダッシュボード内シートを選んでおけば、
フィルター選択時に該当0件になった項目は自動で消えてくれる。
サブカテゴリを増やした例。
カテゴリを選択したら、それに応じてサブカテゴリの表示が増減する。

このように設定することで、「売上ダッシュボード」へのシート遷移が発生しなくなります。

[CASE2] フィルターの実行順を制御できない

フィルターアクションの設定失敗例②

先ほどまでのワークブック内に新しくダッシュボードを作成しました。そのため、エントランスページである「前提条件選択」ダッシュボードにナビゲーションボタンを追加し、同じ内容のフィルターアクションを新規追加ダッシュボード向けにも設定しました。

先ほどの失敗例①の回避方法を設定していれば、何事もなく動くこともあるのですが、失敗例①の症状がたまに再発することがあります。

「新規追加…地域別へ遷移」というフィルターアクションを追加。
同一シートに遷移するためのフィルターもあるしこれでOK! と思いきや…
「家具」を選択しただけで、新規作成したダッシュボードに勝手に遷移してしまった。

上記のようにシート遷移してしまった理由は、フィルターアクションの順番を制御できていないからです。

フィルターアクションは、作成順ではなく名前順で実行されます。
基本的に

半角数字(0~9)半角英大文字(A~Z)半角英小文字(a~z)全角かな全角カナ全角漢字全角数字全角英大文字全角英小文字

Chasoso調べ。文字コード順と思われる。

の順番となるので、「フィルター2…」という名前のアクションよりも後に「新規追加…」という名前のアクションが実行されてしまったことになります。

もう一度アクション一覧を確認してみる。(上記と同じ画像)
この表示順ではなく「フィルター1…」⇒「フィルター2…」⇒「新規追加…」という順番でアクションが実行されたことになる。
試しに「新規選択」を外して名前を半角数字始まりにした上で、
同一シート遷移用のアクションを消してみると、
地域別ダッシュボードに遷移した。

失敗例②の回避方法(一例)

名前順にアクション実行されるのであれば、あらかじめ名前の先頭に番号を振ることで容易に順番制御できます。

連番を振ってみた。
表示順がバラバラだが、特に問題はない。
想定通り、カテゴリ・顧客区分・出荷モードを選ぶだけで
シート移動してしまうことはなくなった。

おわりに

フィルターアクションはインタラクティブなVizを作成するために必須と言っても良い機能です。
フィルターアクションを使いこなせれば表現の幅が増えるので、さらに活用できるようにしていきたいですね。

いいなと思ったら応援しよう!