【Tableau】気になってた機能を試してみた 001

[Tableau Public](https://public.tableau.com "Tableau Public")に投稿されてるカッコいいVizを見たりしていて、
「これ、どーやってやってるんだ？」と気になってた機能を試してみます。
「001」って書きましたけど、いつ「999」になるんだろうって感じですし、
「002」さえ来ないかもしれません。

さて、今回試してみたのは次の3つです。
　* ナビゲーション
　* 非対称ドリルダウン
　* Dynamic Zone

検証結果は[こちら](https://public.tableau.com/app/profile/yusuke.sekine6854/viz/_20230119/sheet6 "こちら")で公開しています。

# ナビゲーション
複数のダッシュボードを含むワークブックを作ったとき、タブを使って別のダッシュボードに
遷移してもらうのってちょっとダサいなーと思ってました。
Tableau Publicに投稿されてる左側に縦にアイコンが並んでて、
クリックすると画面が遷移するVizをみてどーやってるんだ？と思い、
Tableau Publicからワークブックをダウンロードして中身を見て分かったのが
「ナビゲーション」です。
![2023-01-20_15h42_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/57b7a674-5f60-cef4-d931-3016bb9349c3.png)

ナビゲーションをダッシュボードに配置して、「ボタンを編集」から設定画面を開くと
移動先のダッシュボード/ワークシートを選択することができます。
![2023-01-20_15h48_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/f43d74f0-7d94-1507-fe56-6236cf4eec1f.png)

同じレイアウトのダッシュボードを作って、空いたスペースに使いたいワークシートを
配置していけばできます。
ナビゲーションの位置を揃えるときに「グリッド」が使えるということを知りました。
![2023-01-20_15h52_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/3cbafd28-0eb5-d6b4-21f7-4c88d71d8304.png)

# 非対称ドリルダウン
階層構造を持ったディメンションを使ってハイライトテーブルを作ったとき、
ドリルダウンをすると全部展開されるのってちょっとダサいなーと思ってた時に知ったのが、
「非対称ドリルダウン」です。
[Tableau社が解説しているサイト](https://help.tableau.com/current/pro/desktop/ja-jp/actions_sets.htm#%E9%9D%9E%E5%AF%BE%E7%A7%B0%E3%81%AE%E3%83%89%E3%83%AA%E3%83%AB%E3%83%80%E3%82%A6%E3%83%B3)もあるのでこちらもご覧ください。
以下はサンプル - スーパーストアを使った事例で、ディメンションは
カテゴリとサブカテゴリを使います。

### Step1. カテゴリを使ったセットを作成
「カテゴリ セット」という名称のセットを作ります。
動作時は**セットアクション**を使うため、中身は何か適当に選んでしまってOKです。
![2023-01-20_18h24_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/a1766095-5d8a-f788-278f-9e683b4f0a48.png)

### Step2. 計算フィールドを作成
ここが肝です。Step1.で作ったセットを判定に使っていることに感動しました。
私は「非対称サブカテゴリ」という名称を付けました。
セットに含まれるカテゴリがあれば、それに付随するサブカテゴリを返して、
それ以外はカテゴリを返しています。
![2023-01-20_18h28_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/8573c3f4-1940-3af7-7285-efb9b0f8d455.png)

### Step3. セットアクションの設定
いよいよセットアクションの設定です。
ソースシートを選択して、ターゲットセットにStep1.で作成したセットを選択します。
「アクションの実行結果」は「セットに値を割り当て」を選択し、
「選択項目をクリアした結果」は「すべての値を設定から削除」を選択します。
すべての値を削除して大丈夫か？って一瞬思うんですけど、
Step3．で作成した計算フィールドによってELSEの条件に該当し、
カテゴリがセットされるので大丈夫です。
![2023-01-20_20h36_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/2aa58e73-478e-1d66-d22f-2dc811fe4c41.png)

### Step4. ハイライトテーブルの作成
私の場合はこんな感じに配置しました。
![2023-01-20_20h49_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/ce9765d0-3e04-b667-aa95-e41f6950cf68.png)
これで設定は終わりです。試しに家電をクリックすると、
![2023-01-20_20h52_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/384b3da4-53ae-66aa-3d9f-e616d9e70f24.png)

ソースシートを選べるので、同じディメンションを持った複数のシートに対して
適用することができる点が結構使えると思います。

# Dynamic Zone
2022.3でリリースされた機能です。
グラフと一覧表を出しているようなVizがあったとして、
常に一覧表を表示する必要はないんだよなー、みたいな時に、
グラフの一部をクリックしたときだけ一覧表を表示できる機能です。
事前に常に出しておきたいシートと、出したり出さなかったりしたいシートを
作っておいてください。

### Step1. ブール型のパラメータ作成
パラメータを作成し、データ型で「ブール」を選択します。
![2023-01-20_18h14_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/4281802f-b650-c503-cd78-6462269a571e.png)

### Step2. 計算フィールドを作成
計算フィールドを作成し、「TRUE」とのみ入力します。
![2023-01-20_21h26_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/65276752-5710-9ec9-47eb-75160232b795.png)
作成したら**事前に常に出しておきたいシート**の詳細にドラッグ＆ドロップします。
![2023-01-20_21h32_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/905ec488-b668-41cd-00ec-f831a5e66781.png)

### Step3. ダッシュボードを作成
事前に用意したシートをダッシュボードに配置してください。
コンテナを使ってもよいと思います。

### Step4. ダッシュボードのパラメータアクションを設定
ソースシートとして事前に常に出しておきたいシートにチェックを入れてください。
ターゲットパラメータはStep1.で作成したパラメータを選択します。
ソースフィールドはStep2.で作成した計算フィールドを選択します。
そして、「選択項目をクリアした結果」に「値の設定」を選択し、「偽」を選択します。

実行対象は「選択」を選んでいるので、事前に常に出しておきたいシートを選択すると、
パラメータに「真」が入り、選択を解除すると「偽」が入ります。
![2023-01-20_21h29_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/e2f5b84d-1663-7492-12f9-d5c5f7ed4545.png)

### Step5. 「値を使用して表示状態を制御する」を設定
これが今回の肝です。
「値を使用して表示状態を制御する」にチェックを入れて、
Step1.で作成したパラメータを選択します。
今回はパラメータのTrue/Falseを使って表示/非表示の制御をしているわけです。
![2023-01-20_21h37_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/d8d881b0-6c5f-c9c9-21cd-89ede66ec9e9.png)
これで設定は終わりです。

私の場合は事前に常に出しておきたいシートとして「カテゴリ別売上比率」という
シートを使い、このシートをフィルタとして使っているため、
![2023-01-20_21h41_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/44ab0962-6c83-b285-3da5-b3a06a28034a.png)
家電・コピー機を選択すると、
![2023-01-20_21h42_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131247/e82c3429-1964-7185-a632-17aec13f11fc.png)
右に「売上利益詳細」という一覧表が表示されます。
なんかTableau使ってるなーって気分になれました。（笑）

# まとめ
部・課でグルーピングされてるデータとかってよくあると思います。
Tableauを使い始めたころは、階層を簡単に作れて、「+」ボタンを押すと
ドリルダウンするだけで「すごー」って思ってたんですけど、パブリッシュしたVizを見て、
スクロールすることに煩わしさを感じるようになっていたので、
「非対称ドリルダウン」は出会えてよかったです。
Dynamic Zoneも画面の有効活用という観点でとても使えます。

ナビゲーションも知る前はコンテナのボタンを使ってたんですが、
「なんだかなー」って思ってましたが、これに出会えたのでVizの幅が広がりそうです。