[TableauミニTips]マークを選択した時に自動で反転を解除する方法2選

Tableauでダッシュボードを作成する際、パラメータアクションなどを使って、選択したマークだけ色を変える仕掛けを入れることはよくあります。
ただ、普通にアクションだけを設定すると、選択したマークが選択されたまま＆他のマークが薄い色になってしまい、なんともコレジャナイ感が生まれてしまいます。

**選択した棒グラフだけ色を変えるぞ！**

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/4356055e-687e-e674-94ee-020499e2e8f1.png">

**違う、そうじゃない**

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/1a682551-53e3-2426-55ec-9fe08a7cebf8.png">

というわけで、ここでは **マークを選択したときに反転を解除する方法** を２つ紹介します。
この記事の作成に使用したワークブックは [Tableau Public](https://public.tableau.com/app/profile/shunta.nakajima/viz/Tips2_16732374104940/sheet1)に置いてあります。

# フィルタアクションを使った選択解除

まずはフィルタアクションを使い、クリックした瞬間に選択を解除してしまう方法を紹介します。

#### ワークシート側の作業（計算フィールドの作成と配置）

例としてシンプルな棒グラフでアクションを作ります。データはいつものサンプルスーパーストアです。
* サブカテゴリごとの売上を表す棒グラフ
* 選択されたサブカテゴリ名を入れるパラメータ
* サブカテゴリがパラメータと同じだったときに色を変えるための計算フィールド
を用意しておきます。パラメータによるマークの色分けは本題ではないので作成方法は省略。

次に、選択解除に使う計算フィールドを２つ用意します。それぞれ異なる固定値が入っていればどんなものでも構いません。
ここでは、数字の1,2を入れたものを用意します。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/4581a7c1-2f29-be51-b92a-c005ff17195e.png">

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/3726733b-cb7d-f0e7-fed7-ea6d704dd1ae.png">

そして、ビューの「詳細」マークカードにこれらの計算フィールドを入れておきます。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/892478a8-70a5-08b4-404f-f0a5a5dbcb0e.png">

#### ダッシュボード側の作業（アクションの設定）

今回はこのようなダッシュボードを用意しました。次のハイライトアクションによる反転解除との挙動の違いを確認するために、サブカテゴリの一覧を表示するシートを入れています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/bca14b8c-1128-be34-2936-9cd7a556744b.png)

まずは、クリックしたときにパラメータを変えるいつものパラメータアクションを設定します。こんな感じですね。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/15140259-8b07-00c8-f553-09023877202a.png">

「選択項目をクリアした結果」は実は **どちらを設定しても結果が変わらない** のですが、挙動の説明のために"None"を設定するようにしています。
さて、このままだと「残念パターン」そのものですので、ここから選択解除のためのフィルタアクションを仕込んでいきます。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/adc84fa9-5f1e-0ca4-d526-21845ca47b53.png">

ポイントは３つあります。これらを間違うとうまく動作しません。
* 「ターゲットシート」はダッシュボードではなく、選択解除させたいシートを設定する
* 「選択項目をクリアした結果」は「すべての値を表示」を設定する
* 「フィルタ」部分は、先ほど作成したダミーの計算フィールドの片方をソースに、もう片方をターゲットに設定する

これで無事、クリックした際に選択解除されるようになります。

<img width="８00" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/a6cac697-33fb-c3c6-8348-9f21eaac51e8.png">

#### 挙動の確認
設定方法の説明はここまでなのですが、フィルタアクションによる挙動を少し確認してみます。

**1. 手動で選択の解除ができない＆解除されているがパラメータ値が選択した時のままとなっている** 

いずれかのマークを選択した後、同じマークを再びクリックしたり、ビュー内の空白エリアをクリックしても、選択されたマークに変化はありません。
フィルタアクションによって、マークの選択が解除された状態になっているためです（マークを選択した際は黒い枠線で囲われますが、このアクションを仕込んだものは枠線が表示されていませんね）
また、フィルタアクションによって選択が解除されているはずですが、パラメータの値は"本棚"のままになっています。「選択項目をクリアした結果」には、パラメータ値が"None"になるように設定していたはずなのに、この手法での選択解除では、パラメータアクションは「クリアされた」と判断しないようです。（バージョン2022.4時点）
そのため、 **この手法は「選択後、クリックで選択を解除して未選択状態に戻す」必要がある時には使用できません（多分）**
選択解除ボタンとか作ればできますがそれはそれでめんどくさいということで。

**２. 他のフィルタアクションはダミーの選択解除と同時にクリアされる** 

確認のために１つフィルタアクションを追加します。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/17f81e8f-9a38-e456-ab46-090f421c2c27.png">

挙動確認のため、「選択項目をクリアした結果」には「すべての値を表示」を設定しています。

さて、この状態でダッシュボードでマークをクリックするとこのようになります。

<img width="1000" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/27f03885-6988-6cb2-c873-932c5036e041.png">

下の一覧で、サブカテゴリが全くフィルタされていないですね。どうやら、パラメータアクションと違い、フィルタアクションは選択解除用のアクションによってクリアされてしまうようです。もちろん「選択項目をクリアした結果」で「フィルタされた値を保持」にしておけばフィルタは維持されます。

# ハイライトアクションアクションを使った反転解除

次にハイライトアクションを使い、クリックした瞬間に反転を解除してしまう方法を紹介します。

#### ワークシート側の作業（計算フィールドの作成と配置）

使用するワークシートはフィルタアクションで使ったものと同じ作りです。


まず、選択解除に使う計算フィールドを1つ用意します。固定値が入っていればどんなものでも構いません。
ここでは数字の0を入れています。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/de4b676c-6f71-16c0-0d68-59644652f7c6.png">



そして、ビューの「詳細」マークカードにこの計算フィールドを入れておきます。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/6ecb90b0-c1b2-ace1-af2c-d3f248461f12.png">



#### ダッシュボード側の作業（アクションの設定）

ダッシュボード側も同じレイアウトにしています。こちらも挙動の違いを確認するために、サブカテゴリの一覧を表示するシートを入れています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/b986772d-c06e-a7b2-7e30-1bac1c267ceb.png)


まずは、クリックしたときにパラメータを変えるいつものパラメータアクションを設定します。設定方法はフィルタアクションの場合と同一なので省略。

「選択項目をクリアした結果」は今回はきちんと動作します。挙動の説明のため例では"None"を設定しておきます。
次に反転解除のためのハイライトアクションです。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/db83e2cd-c02f-c082-7dfa-6c37b0ff121f.png">


ポイントは2つあります。これらを間違うとうまく動作しません。
* 「ターゲットシート」、今度はダッシュボードおよび反転解除させたいシートを選択する（もちろん他のシートは選択しない）
* 「ターゲットのハイライト」部分は、先ほど作成した計算フィールドのみを設定する

これで無事、クリックした際に反転解除されるようになります。
フィルタアクションの場合と違い、今度は選択したマークが黒い枠で囲われています。反転を解除しただけで、選択は維持されていることがわかります。

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/41ecb8d3-ba87-4a01-bb88-6bb4fe63ec81.png">

#### 挙動の確認
さて、こちらでも少し挙動を確認してみましょう。先ほどと同じフィルタアクションを仕込んでおき、マークを選択するとこのようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/ad3f6b56-eed9-63c9-a51e-86d41443593f.png)

下の一覧で、選択したマークに対応するサブカテゴリのフィルタが維持されていることがわかります。
また、ここから選択を解除すると、今度は未選択状態に戻り、一覧のフィルタも解除されます。（フィルタアクションの「選択項目をクリアした結果」は「すべての値を表示」を設定しています）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1945012/0b497b39-062a-636f-6024-e04c29d12770.png)

パラメータ値も、設定通り"None"が入り、その結果すべてのマークが同じ色になりました。

# さいごに
今回は「マークを選択した時に自動で反転を解除する方法」を2つご紹介しました。「残念パターン」を脱却するために活用する機会はそこそこあると思います。
この記事がみなさんの助けとなれば幸いです。