はじめに
Rank関数を利用して、レコードのランキング(順位)を表示させる手順をここでご紹介します。
Rank関数の基本的な使い方
Rank関数は以下の様な形で数式を引数に与えて利用すると、ランキングを表示します。
Rank(Sum(売上))

上記の例では、「Sum(売上)」によって集計される売上高の大小に従って製品を軸としてランキングを行っています。
2軸以上でのランキング
先ほどの例では「製品」の1軸のみでランキングを表示しましたが、例えば以下の様な形で「製品カテゴリ」と「製品」といった形で2軸とした場合、上位軸の「製品カテゴリ」でグループ化された中で「製品」のランキングが算出されます。

これを軸を跨ってランキングを算出するには以下の形で「Total」句を利用します。
Rank(Total Sum(売上))

このようにTotal句を利用すると全ての軸を跨ったランキングの表示が行われます。
テキスト表現の表示方法の変更
先ほどの例では同一順位のレコードの順位は「3-4」(最小値-最大値)という形で表示されていました。Rankには追加で2つの数値を引数として指定することが可能となっており、2つ目の数値の引数で以下の指定可能となっています。(「3-4」の順位の例に有る通り、3は順位上は「最高順位」となりますが、ここでは「最小値」と表現し、「最低順位」の4を「最大値」としていますのでご注意ください。)
- 0 (デフォルト) 最小値-最大値 (例: 3-4)
- 1 最小値
- 2 最初の行は最小値で、その後は空白
2つ目の数値の引数に1を指定すると、以下の形で最小値のみが表示されます。
Rank(Sum(売上),0,1)

2つ目の数値の引数に2を指定すると、最初の行は最小値で、その後は空白が表示されます。
Rank(Sum(売上),0,2)

数値表現の表示方法の変更
次にRankの数値の表現方法の変更についてご説明します。RankはQlik Sense内部にDualと呼ばれるデータ形式で「テキスト表現」と「数値表現」の2値がそれぞれのレコードに対して保持されています。この「テキスト表現」については先ほどご説明させて頂きましたが、以下の形でNum関数でRank関数を括ることでRankの数値表現を表示させることができます。
Num(Rank(Sum(売上)))

出力を確認すると、先ほどのRank関数とは異なる値が表示されていることが確認できます。このNum関数を利用した場合にはDualの数値表現が表示され、ランキング全体の中間値以下の場合は最小値、中間値をまたぐ場合は平均順位、中間値以上の場合は最大値がここに表示されています。
この数値表現の表示方法については、1つ目の数値の引数で以下の指定可能となっています。
- 0 (デフォルト) ランキング全体の中間値以下の場合は最小値、中間値をまたぐ場合は平均順位、中間値以上の場合は最大値
- 1 最小値
- 2 平均順位
- 3 最大値
- 4 最初の行は最低順位、その後は1ずつ増加
まず1つ目の数値の引数に1を指定すると、以下の形で最小値のみが表示されます。
Num(Rank(Sum([売上]),1,0))

引数に2を指定すると、以下の形で平均値のみが表示されます。
Num(Rank(Sum([売上]),2,0))

引数に3を指定すると、以下の形で最大値のみが表示されます。
Num(Rank(Sum([売上]),3,0))

引数に4を指定すると、最初の行は最小値が表示され、その後は1ずつ増加されます。
Num(Rank(Sum([売上]),4,0))

まとめ
以上、Rank関数を利用してレコードのランキング(順位)を表示させる手順をご説明しました。