[Tableau Tips]動的セットをつかいこなそう！（そもそもセットとは？から動的セットの実装方法、実装時のポイントまでご紹介）

# <a id="section0" href="#section0">はじめに</a> 
こんにちは。DataSabar取得に向け鍛錬中のしまです。
今回は動的セットの実装方法について、自分が学ぶ中でこんな記事が欲しかった！と思った内容をまとめています。
少しでも誰かの役に立てたらいいな。と思っています！

## <a id="index" href="#index">目次</a>
* [はじめに](#section0)
* [セットの概要・作成方法](#section1)
* [動的セットの概要と実装方法](#section2)
* [動的セット実装の重要なポイント「コンテキストフィルタ」](#section3)
* [まとめ](#section4)

# <a id="section1" href="#section1">セットの概要・作成方法</a> 
セットとは：
セットはTableauの機能のひとつで、使用することにより「ユーザが選択したデータ」と「選択していないデータ」に分類することができます。データをある条件でまとめて見たいときに使用します。
セットの作成方法：
セットを作成する方法は①ディメンションから作成②シート上から作成の２種類です。
**【ディメンションから作成する方法】**
[手順１] 
セットを作成したいディメンションを右クリック＞「作成」をクリック＞「セット」をクリック
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/88c4d310-b514-5a23-f174-69d4f1979455.png" width="400">

[手順2]
セットの作成でまとめたいデータを選択後OKをクリックして作成。
    [全般] [条件] [上位]の3種類のタブが存在。
    　[全般]：手動でデータを選択したいときに利用
    　[条件]・[上位]：条件でデータを指定したいときに利用
 フィルタのような感覚で使えます！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/99f8e8d0-0494-5ede-4e78-dbcc88ce2fb9.png" width="400">

**【シート上からの作成方法】**
セットでまとめたい項目を選択し右クリック＞「セットの作成」をクリック＞OKをクリック　で作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/b50991e3-a7d0-20c5-2016-bd23bd6a4f2e.png)

<p class="ec__link-index"><a href="#index">[↑ 目次へ]</a></p>

# <a id="section2" href="#section2">動的セットの概要と実装方法</a>

動的セットとは：フィルターによって中身が変化する動的なセットのこと。
　
説明書きだけではイメージがつきにくいと思うので動的セットの活用例を考えてみます。
**例：「ある年の売上TOP１０の顧客名を見たい場合」**
このうち
「ある年の」⇒フィルタで実装
「売上TOP１０の顧客名」⇒セットで実装
なので
「ある年の売上TOP１０の顧客名」⇒フィルタ＋セットで実装
ということになります。
具体的な操作を見ていきましょう。
①～④の操作で実装します。
　①売上TOP１０の顧客名セットを作成
　②[売上]を列、[顧客名]を行、売上TOP１０の顧客名セットをフィルタに入れる
　③オーダー日（年）をフィルタに入れる
　④オーダー日（年）のフィルタをコンテキストに追加する
 　　※④に関しては次の章で補足説明
  
【①売上TOP１０の顧客名セットを作成】
顧客名ディメンションを右クリック＞作成をクリック＞セットをクリック する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/e8e75d9d-9886-306e-3c66-06f5a4c03c98.png" width="400">

　
名前を分かりやすくするために「売上TOP１０の顧客名」とし、上位タブのフィールド指定で上位１０x売上合計に設定しOKをクリックする。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/e80d0a28-683f-9795-c743-5408f86ddc52.png" width="400">

　
左のペインに下写真のセットが表示されていればセット作成完了
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/d92dc706-f97a-fc26-9939-163a6aa4ef6f.png" width="250">


【②[売上]を列、[顧客名]を行、売上TOP１０の顧客名セットをフィルタに入れる】
下のように表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/f78914d2-f035-b0cc-9359-11ef335016fe.png)

【③オーダー日（年）のフィルタを作成】
オーダー日をフィルタにドラッグアンドドロップし年を選択しフィルタを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/8bca4bdb-8867-0ad1-af40-c597643b697f.png)

下写真のような年のフィルタを作成する（日付フィルタを分かりやすくまとめたサイトはこちら ⇒ https://bi.atara.co.jp/knowledge/tableau_graph_231107_01 )
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/afb0aba7-6998-ffce-7bc6-fafe3161efb9.png)

【④オーダー日（年）のフィルタをコンテキストに追加する】
年フィルタを右クリック＞コンテキストに追加をクリック
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/1d35604d-3353-6b78-7cc1-6c47e372548d.png" width="300">

　
フィルタの色が灰色に変化していれば完了
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/97ef4641-0f9b-f26d-a15c-20084dfdf05c.png" width="300">

①～④実装後のシートは以下のようになります。2021年でフィルタをかけたときと2023年でフィルタをかけたときとではTOP１０の顧客名が変化しています。（動的セット完成！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/1ec02a0c-be94-dd41-257b-cde10c67ba1f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/26d68332-98ad-f127-c271-e5087886c1e3.png)

<p class="ec__link-index"><a href="#index">[↑ 目次へ]</a></p>

# <a id="section3" href="#section3">動的セット実装の重要なポイント「コンテキストフィルタ」</a>
実装手順【④オーダー日（年）のフィルタをコンテキストに追加する】について気になった方も多いのではないでしょうか。
試しに④を行わなかった場合を見てみます。
すべての年でフィルタをかけたときと2022年でフィルタをかけたときのTOP１０の顧客名リストを見てみると、、、
なんと、変化していません！（昇順にしているため順番が変化していますが10名のラインナップは変化していません）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/0455813b-0ca3-1071-6e83-a4b2fc600e2d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914542/b8bdaf29-2d3c-6693-e95b-b922ca23fa6e.png)

どうしてでしょうか。
そこで、フィルタを**コンテキストに追加するとどうなるか**ですが、、
コンテキストに追加すると複数のフィルタが存在した場合に**フィルタする順番が変化します。**
（※コンテキストに追加したフィルタをコンテキストフィルタという）
前章で説明した実装手順を例にとると
　年のフィルタをコンテキストに追加前：セットの条件判定（フィルタ）⇒年のフィルタの順でフィルタがかかる
　年のフィルタをコンテキストに追加後：年のフィルタ⇒セットの条件判定（フィルタ）の順でフィルタがかかる
上記でTOP１０の顧客名が変化しなかったのは、2022のフィルタがかかる前にセットのTOP１０の顧客名が決められてしまっていたためだった、ということです。

Tableauには多くのフィルタの種類が存在していて、フィルタの処理順のことを**クエリパイプライン**と呼びます。今回はその考え方を使いました。（詳しくはこちら　⇒　https://note.com/minoru_tech/n/n9bbd821563bf ）

<p class="ec__link-index"><a href="#index">[↑ 目次へ]</a></p>

# <a id="section4" href="#section4">まとめ</a>

* セットは選択したデータとそれ以外のデータとに**分類する機能**である
* 動的セットは**フィルタ条件で中身が変化**するセットのことである
* 動的セットを実装するにはフィルタを**コンテキストに追加**する必要がある

<p class="ec__link-index"><a href="#index">[↑ 目次へ]</a></p>