前置き
TableauのRANK関数、項目を順位別に並べたい時などに便利ですよね。簡易表計算から使用することがほとんどだと思いますが、自分で計算式で作ることも可能です。計算式で作ろうとすると、実はRANK関数は5種類あることがわかります。どう違うのか気になったので整理してみました。
5種類のRANK関数の違い
サンプルスーパーストアでサブカテゴリごとの販売数量を、5種類のRANK関数で計算すると下図のようになりました。
一番上のRANK
が簡易表計算でも使われる、もっとも一般的なものです。結果を見ると、文房具と電話機が同率9位で、その次の家具は11位となって10位は存在しません。つまり、RANKは同率を許し、同率の後ろの項目の順位は1位から数えた〇個目になる(同率があると順位が飛ぶ)、ということがわかります。
次のRANK_DENSE
は文房具と電話機が同率9位で、その次の家具は10位となっています。最下位のテーブルも16位となっており17項目あるのに16位までしかありません。つまり、RANK_DENSEは同率を許し、同率の後ろの項目の順位は1位から数えた〇位になる(同率があっても順位は飛ばない)、ということがわかります。
次のRANK_UNIQUE
はこれまでの2つとは違い、文房具と電話機は販売数量が同じなのにも関わらず、文房具が9位で電話機は10位になっています。つまり、RANK_UNIQUEは同率を許さない(同じ値であっても別の順位がつけられる)、ということがわかります。
次のRANK_MODIFIED
は文房具と電話機が同率10位で、その次の家具は11位となって9位は存在しません。つまり、RANK_MODIFIEDは同率を許し、同率の項目の順位は同率項目の数だけ飛ぶ、ということがわかります。
最後のRANK_PERCENTILE
は少し毛色が違ます。順位付けの考え方はRANK
と同じですが、値としては1位が1、最下位が0で、その間の順位の値は項目数で均等割りした値を引いていった値になります。具体的には、今回項目数が17なのでn位の値は次の計算式で求められます。
1-\frac{n-1}{17-1}
まとめ
それぞれの関数の特徴を表にまとめました。違いは理解できましたが、正直RANK関数以外は使う機会なさそうだな~というのが正直なところ。あと、検証用に作成したVizはTableau Publicにアップしていますので、よろしければそちらもご覧ください。