Tableauは、データの視覚化に特化したBIツールです。データ分析の経験や知識がなくても、簡単にデータの意味を理解することができます。
Tableauのフィルター機能は、データの表示範囲を絞り込むことができる便利な機能です。しかし、フィルターを固定してしまうと、データの傾向や変化を把握しにくくなることがあります。
そこで、フィルターをパラメータと連動させ、指定したフィルターを動的に適用させる方法があります。これにより、データの表示範囲を自由に変更できるようになり、データの傾向や変化をより簡単に把握することができます。
この方法については以下のTableauの公式ページにもまとめられていますが、最初は理解に苦しむ方が多いのではないでしょうか?
本記事では、Tableau初心者の方でもわかりやすく、表現を工夫してフィルターをパラメータと連動させる方法を解説します。
今回解説の際に作成するvizは以下のリンクからご確認いただけます。
フィルターとパラメータの概要
フィルターとは、データの表示範囲を絞り込むことができる機能です。例えば、売上データの月別推移を表示する際に、特定の月のみ表示したい場合にフィルターを使用します。
パラメータとは、ユーザーが入力する値を変数として保存しておく機能です。分かるようで分からないのではないでしょうか?私も最初はそうでした。私は以下のようにイメージしています。
その都度プルダウンなどで選択して値を決められる箱
このようにイメージすれば分かりやすいのではないでしょうか?
例えば、ユーザーに「表示する月を選択してください」という選択肢を表示し、ユーザーが選択した月のみ表示したい場合にパラメータを使用します。この際は何月であるかという選択を行って最終的には1つに選んでパラメータという箱に格納するイメージです。
フィルターをパラメータと連動させる方法を徹底解説!
今回はTableauにデフォルトで入っているサンプルスーパーストアのサンプルデータを用いて説明します。このデータはECサービスの顧客データや販売データです。
今回扱うグラフと想定シチュエーションは以下のようになっています。
あなたはデータアナリストで、クライアントであるECサービスのマネージャーに売上の大きさでフィルターを掛けて商品の売上を分析したいと言われました。また、そのフィルターを掛ける売り上げの大きさは20000以上,15000~20000の二つです。また、マネージャーはTableauに疎いです。
フィルターを掛ける前のグラフは以下のようになっています。
こんな時、自分で分析するなら売上というメジャーをフィルターに置いて値段を設定すれば大丈夫だけど、Tableauのこと分からない人が使うならボタン一つでフィルターを掛けられるように作成する必要があるな、、、という思考になるはずです!こんな時にパラメータとフィルターを連動させます。
フィルターをパラメータと連動させるのは、以下の手順イメージです。
- パラメータとして変動させたいフィルターたちを計算フィールドで作成する
- フィルター名をリストとしてもつパラメータを作成する
- 1で作ったフィルターと2で作ったパラメータを紐づける計算フィールドを作成し、フィルターシェルフへ設置
- 完成!
パラメータとして変動させたいフィルターたちを計算フィールドで作成する
まずはパラメータで変動させたいフィルターを作成します。
今回は売上(sales)の大きさで判別するフィルターを作成する必要があります。以下のような2つの計算フィールドを作成します。
ちなみに左にあるデータタブからメジャーをドラックアンドドロップすることで計算フィールドに反映させることが出来るので便利です!また、sumを使っているのは、フィルターを掛けたい値が商品別に合計を集計した値であるからです。
計算フィールドに以上のように条件式を記載すると、True or Falseの値を返してくれるので、作成した計算フィールド(sale15000 to 20000,oversale20000)をフィルターシェルフに置くと売上の値でフィルターを掛けることが出来ます。
フィルター名をリストとしてもつパラメータを作成する
パラメータを作成します。左のタブの上の方にある▼を押してパラメータの作成を選択します。
その後下画像のように入力します。
この画面では、sale15000 to 20000,oversale20000という二つの値をもつパラメータという箱を作成しているイメージです。
※今回は説明の都合上データ型を文字列にしていますが、本来であれば数値型にした方が処理上の負荷は少ないらしいです。
1で作ったフィルターと2で作ったパラメータを紐づける計算フィールドを作成
実は先ほど作成したパラメータはこの時点ではただの文字列のリストであってTableau上では何の意味も持たせられていないです。(パラメータという箱に文字列を2個入れただけのイメージ)
そこで必要になってくるのが、
パラメータの2つの値の意味をTableauに指定してあげる
以上のような作業です。
パラメータへの意味付けは計算フィールドで行います。
case文というものを使います。
英語で「~の場合」という意味があるのでイメージが付きやすいと思いますが、
「Xが10より大きいならover10という名前をX付けて、10より小さいならunder10という名前をXに付けたい」
以上のような「Xというものを場合によって名前を分けたい」という際にcase文を使います。
写真の計算式を日本語に直してみます、
[param_sale]という2つの文字列を持つ箱(パラメータ)の値を場合分けしたい、(case)
sale15000 to 20000 という文字列の時はTableauで作成した計算フィールドsale15000 to 20000を値として返す(when ~ then)
oversale20000 という文字列の時はTableauで作成した計算フィールドoversale20000を値として返す(when ~ then)
終了!(end)
大体のイメージが付けられたのではないでしょうか?
このcase文によってパラメータの値がただの文字列だったのがTableauで作った計算フィールドに変換されたと言うことが出来ます!
では、fil_param_saleという計算フィールドには最終的にはどのようなものを表すのか分かりますか?
結論:計算フィールドであるsale15000 to 20000 または oversale20000
1でも述べたようにsale15000 to 20000などの計算フィールドはTrue or Falseを返すものでフィルターとして使えるんでしたね。
ということはfil_param_saleをフィルターシェルフに置けば売上にフィルターを掛けることができそうですね、、、
しかし、fil_param_saleという箱にsale15000 to 20000 または oversale20000 のどちらが入るのかはどうやって決まるのでしょうか?
それを決めるのが先ほど作ったparam_saleパラメータということです。
完成!
デフォルトではパラメータがsale15000 to 20000を選択する設定にパラメータ選択画面で設定を行っています。ちゃんと、売上が15000~20000の商品のみにフィルターが掛けられていますね。
続いて、右上のパラメータの値をoversale20000に変えてみましょう!
ちゃんと20000以上の売上の商品のみに絞られました。
完成です!!
まとめ
今回はフィルターをパラメータと連動させる方法を私なりのイメージをもとに解説してみました!
私なりにかみ砕いてイメージをお伝えしたつもりです、参考にしていただけたら幸いです。
他にも、ダッシュボードのシートを動的に切り替える方法などについても解説しています。
【Tableau】 ダッシュボードのシート切り替えを実現する機能がある!?徹底解説します!
解説してほしいものがございましたら、以下のリンクから問い合わせをお願い致します!!
コメント