概要
本記事は、Rank() / RankReal() 関数の使い方について情報を整理いたします。
Rank() / RankReal() 関数は、計算カラムやカスタム演算式内で利用可能なものであり、指定したカラムを参照し順位付けを行う機能を提供します。
動作確認環境
本記事は以下の環境で動作確認したうえで作成しています。
- Spotfire Analyst 14.0 LTS
本記事の内容はSpotfire Analyst / Web Player / Automation Services 10.10 LTS以降に適用できます。
Rank() 関数の使い方
選択したカラム内の値のランクを表す整数値を返します。最初の引数にはランクしたいカラムを指定します。
使い方:
Rank([ランクしたいカラム], "asc/desc"または"ties.method="XXX", [カテゴリカラム])
- ランクしたいカラムは、最初の引数として1つのみ指定できます。
- "asc" 昇順 / "desc" 降順(オプション):値のソート順を指定、未指定の場合は"asc"昇順。
- "ties.method=XXX"(オプション):値が同じのデータのランク値の算出方法を制御。
- XXX部分に minimum / maximum / first / average のいずれかを指定可能、詳細は後述参照。
- カテゴリカラム(オプション):ランクの算出範囲を指定、複数指定が可能。
- カテゴリカラムの数には制限はないようで、2,000個まで指定できることを確認済み。
下記例では、対象カラムに対してランクを算出します。
Rank([ランクしたいカラム])
例:
下記例では、第二引数に指定した「カテゴリ」カラムごとに、対象カラムに対してランクを算出します。
Rank([ランクしたいカラム], [カテゴリカラム])
例:
複数の「カテゴリ」カラムを指定して、ランクを算出することもできます。
Rank([ランクしたいカラム], [カテゴリカラム①], [カテゴリカラム②], ・・・)
例:
下記例では、値の逆順でランクを算出します。
引数「"desc"」未指定の場合、または「"asc"」を指定した場合は値の昇順でランクを算出します。
Rank([ランクしたいカラム], "desc")
例:
下記例では、「カテゴリ」カラムごとに、値の逆順でランクを算出します。
Rank([ランクしたいカラム], "desc", [カテゴリカラム])
例:
複数カラムに対してランクを算出するには、文字列の連結などで複数カラムを1つのカラムに変換してから Rank() 関数を呼び出すことで対応できます。
この場合に構成する文字を左から一つずつ比較して辞書式順序でランクを算出しますので、前のカラムの比較が完了してから次のカラムを比較するように、例えば前のカラムを同じ長さの文字列に変換するなどをご検討ください。
例:
値が同じの行が複数個も存在する場合、「"ties.method=XXX"」引数を指定して、ランク値の算出方法を制御できます。
式 | 説明 |
Rank([ランクしたいカラム]) ※ties.method未指定 | 下記の"ties.method=minimum"とは同じ結果になる |
Rank([ランクしたいカラム], "ties.method=minimum") |
デフォルト設定 値が同じの行のすべてに、最小のランク値が与えられる |
Rank([ランクしたいカラム], "ties.method=maximum") | 値が同じの行のすべてに、最大のランク値が与えられる |
Rank([ランクしたいカラム], "ties.method=first") | 値が同じの行をデータのロード順に、順番でランク値が与えられる |
RankReal([ランクしたいカラム], "ties.method=average") ※結果が実数値となる可能性があるため、RankReal() 関数を使用すること |
値が同じの行のすべてに、ランクの平均値が与えられる |
例:
注意事項
①、「"ties.method=XXX"」の指定値(minimum / maximum / first / average)を誤って記載してもエラーにはなりません。
この場合に引数「"ties.method=XXX"」は通常の文字列とみなされ、「カテゴリ」カラムとして使用されますが、全行共通の値となっているためランク値の算出結果には影響はありません。
②、「"desc"」と「"ties.method=first"」を同時に指定して、値が同じの行に対してデータの逆順でランク値を与えることはできません。
「"desc"」は値の大きさで決められますが、「"ties.method=first"」はデータのロード順(行の物理順)で決められますので弁用しても期待通りの結果が得られません。
この場合は代わりに以下のような式をご使用ください。
Count([ランクしたいカラム]) - Rank([ランクしたいカラム],"ties.method=first") + 1
例:
RankReal() 関数の使い方
選択したカラム内の値のランクを表す実数値を返します。
RankReal() 関数は実数値を返しますが、それ以外に使い方は Rank() 関数とは全く同じです。
参考資料
Analystのメニュー:ヘルプ⇒ヘルプトピックを開いて、製品マニュアルにある以下の章をご参照ください。
- データを処理する ⇒ 計算カラムの追加 ⇒ 式の言語 ⇒ 関数 ⇒ ランク関数
Spotfire® Web クライアント ユーザー ガイド - ランク
Spotfire® Web クライアント ユーザー ガイド - ランク関数