top of page

Tableau実践問題集 #TableauChallenge を作りました。

任意のディメンションでのランクをTableauで表示する方法


(良いタイトルが思いつきませんでした)

今回のテーマは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を参考にしました。

今回の記事に使用したワークブックは以下からダウンロードできます。データセットはスーパーストアです。

 

【はじめに:普通の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のデザイン次第では、スコアカードへの応用も可能です。詳細はダウンロードして確認してみてください。


 

SetとRANK関数の合わせ技、いかがでしたか。

ご質問等はTwitter、Linkedinへよろしくお願いします。

bottom of page