(良いタイトルが思いつきませんでした)
今回のテーマはSetとRANK関数の合わせ技で、あるディメンションでのランクと、上位階層のディメンションでのランクを、一つのビューで同時に表示する方法です。
下記のViz作成を通して解説します。
ここで以下の点に注目してください。これが今回のテーマです。
・何も選択されていない場合は、Bar ChartはOverall Rankに沿って表示されている:全世界のTop Citiesを表示している。
・Marketをクリックした際、今度はRank within Dimension 1(Market)に沿って表示されている一方で、Overall Rankも表示されている。
・Countryをクリックした際、今度はRank within Dimension 2(Country)に沿って表示されている一方で、上記2つのランクも表示されている。
以下のVizを参考にしました。
今回の記事に使用したワークブックは以下からダウンロードできます。データセットはスーパーストアです。
https://public.tableau.com/profile/yoshitaka6076#!/vizhome/RankwithSetActions/Dashboard1?publish=yes
【はじめに:普通のRANK関数の使用法】
RANK関数は、ある集計値による、指定されたディメンションに関するランクを出力します。
簡単な例では以下のように、MarketによるSalesのランクが作れます。
次にデータの粒度を上げて、Countryによるランク(全体ランク)を表示させながら、そのCountryのMarket内のランクも表示させます。下記ではMarket内の上位3位までを表示させています。
このときの各RANK関数の設定は以下のようになっています。
RANK関数に限った話ではないのですが、表計算では「どの粒度で計算させて」「どの粒度で計算をやり直させるか」が肝になってきます。
【問題:ディメンションフィルターとRANK関数】
ところで、表計算はディメンションフィルター等々の後に実行されるものでした。
したがって、例えば「MarketがAPACに含まれるCountryの、全体ランク、Market内ランクのみを表示させたい」という場合は、Marketをディメンションフィルターに用いると、その時点で全体ランクの値は「APACに含まれるCounrtyだけを用いたランクになる」という問題が生じます。
要は下記のような問題です。全体ランクとMarket内ランクが同じになります。
【解法:Setを用いて疑似的なフィルターを作成する】
この問題を解決するために「Setを作成し、ビュー内でSetに含まれないアイテムを非表示にして、疑似的なフィルターを作成」します。
まず初めに、以下の計算フィールドを作成します。
Dimension 1
[Market]
Dimension 2
[Country]
Measure
[Sales]
Rank Overall
RANK(SUM([Measure]))
Rank within Dimension 1
RANK(SUM([Measure]))
次に、Dimension 1でセットを作成します。一旦はAPACをセットに含めます。
その後、以下のようにワークシートにそれぞれ配置します。
次にセットのOUTを非表示にします。OUT上で右クリック→非表示でOKです。
その結果、下図のようにAPACだけを表示しつつ、全体ランクを表示することができます。
加えてCityに関するランクも表示させるには、同様の手順を踏めばOKです。
まずは計算フィールドを作成します。またDimension 2でセットを作成します。ここではAustraliaのみを含めます。
Dimension 3
[City]
Rank within Dimension 2
RANK(SUM([Measure]))
最終的に下記のように設定します。セットのOUTを非表示にすることをお忘れなく。
今回のテーマの大筋は終了です。
後はいい感じにDimension 1、Dimension 2を使ったワークシートを作成し、ダッシュボードにまとめてSet Actionを設定してあげれば、最初のようなVizができます。
細かいダッシュボードの設定はTableau Publicリンクを参照してください。
【別の応用例】
自分のMakeover Monday 2019/W2で試してみました。
結局は単なる表計算で、要は用いるディメンションがデータを切り分ける形で入っていればいいので、必ずしもテーブル形式である必要はないです。
Vizのデザイン次第では、スコアカードへの応用も可能です。詳細はダウンロードして確認してみてください。
https://public.tableau.com/profile/yoshitaka6076#!/vizhome/MM2019W2PressFreedomsDarkHorizon/MM2019W2
SetとRANK関数の合わせ技、いかがでしたか。
ご質問等はTwitter、Linkedinへよろしくお願いします。