tomokoです。
チャートを数値の大きさで並べかえたいという要望はよくありますね。
フィルターをかけたらフィルターをかけたものの中での順位になってしまう…、ということに直面したことはありませんか?
その解消方法をご紹介します!
ランク関数の計算順序
RANK関数は表計算関数です。表計算関数はフィルターがかかった後に計算されます。
詳しくは RANKとINDEXの違い でも紹介しています。
ランク関数でランキングする
単純にRank関数でランクした状態で、ディメンションフィルターをかけると…
↓フィルターがかかった状態の中でランクが振られてしまいます。
フィルターをかけても全体のランキングを維持したい
最初にRANK関数の計算順序を確認しましたが、表計算であるRANK関数は、すべてのフィルターがかかった後に計算されます。
今回はメーカーのフィルターをかけています。メーカーのフィルターはディメンションフィルターですので、
このままだと表計算よりも先に計算されてしまいます。
そこで、メーカーを表計算にしてしまいましょう!
表計算関数の1つであるLOOKUPを使用した計算フィールドを作成します。
表計算関数で指定するフィールドは集計か定数でないといけないため、メーカーをATTRでくくります。
作成した [メーカー(表計算)] をフィルターに入れて [メーカー(表計算)] を絞ると…
↓メーカーが絞られてもランクは維持されています!
サンプルViz
ディメンションを表計算にしてフィルターをかける方法を実装したVizを Tableau Public にあげています。
ニューヨークの高校で行われたSATという試験の結果のランキングで、受験者数、科目のいずれかをソートキーとして選択し、
ランクを確認することができます。
学校でフィルターしても順位は変更されません。
まとめ
「表計算はすべてのフィルターの最後に計算される」
これを意識して表計算を使いこなしてくださいね!