RANK 関数は一連の値を評価し、1 から始まるランクを割り当てます。
たとえば、RANK 関数を使って、販売収益ごとに異なる担当地域をランク付けできます。
RANK(Source values [, Direction] [, Equal value behavior] [, Include value] [, Ranking groups])
引数
引数 | データ型 | 説明 |
Source values | 数値、日付、又は時間軸 | ランク付けする数値、日付、又は時間軸です。 |
Direction (オプション) | キーワード | ランク付けする順序を決定します。 キーワードは DESCENDING と ASCENDING です。以下の「Direction 引数のキーワード」セクションにはさらに詳しい情報があります。 |
Equal value behavior (オプション) | キーワード | 同等の値をランク付けする方法を決定します。 キーワードは MINIMUM、MAXIMUM、AVERAGE、SEQUENTIAL です。以下の「Equal value behavior 引数のキーワード」セクションにはさらに詳しい情報があります。 |
Include value (オプション) | ブール値 | 値をランク付けするかどうかを決定します。 デフォルト値である TRUE では、値がランキング対象になります。 |
Ranking groups (オプション) | 数値、ブール値、日付、時間軸、リスト。テキストは Classic でのみサポートされています。 | Source values が入力されている場合、Source values は Ranking groups 引数の各値とは無関係にランク付けされます。 |
RANK 関数は結果を数値形式で返します。
Direction 引数のキーワード
キーワード | 説明 |
DESCENDING | Direction 引数を省略した場合のデフォルトのキーワードです。 このキーワードを使用すると、RANK 関数は最も高いソース値に 1 、2 番目に高いソース値に 2 という順番でランクを付けていきます。 |
ASCENDING | このキーワードを使用すると、RANK 関数は最も低いソース値に 1 、2 番目に低いソース値に 2 という順番でランクを付けていきます。 |
Equal value behavior 引数のキーワード
キーワード | 説明 |
MINIMUM | Equal value behavior 引数を省略した場合のデフォルトのキーワードです。 それらの値を結合し、その範囲での最低のランクを付けます。 |
MAXIMUM | それらの値を結合し、その範囲での最高のランクを付けます。 |
AVERAGE | それらの値を結合し、その範囲での平均値のランクを付けます。 |
SEQUENTIAL | それらの値を結合し、ベースとなるリストに出現する順序で個々のランクを付けます。 |
構文の例
RANK(Revenue, DESCENDING, MINIMUM, Include in Ranking?, Region)
この式は、「Include in Ranking?」ライン アイテムが TRUE の場合に「Revenue」ライン アイテムの値をランク付けします。「Region」で指定した各グループの値をランク付けします。
式ではキーワード DESCENDING と MINIMUM を使用しているため、結果は次のようになります。
- 「Revenue」ライン アイテムで最も高い値が 1 位になります。
- 「Revenue」ライン アイテムで同じ値がある場合、どちらにもより低いランクが付けられます。
追加情報
さまざまなデータ型におけるランキングの動作
RANK 関数の Source values 引数には、数値形式、日付形式、又は時間軸形式のライン アイテム、プロパティ、又は式を使用できます。ただし、結果は常に数値形式で返されます。
Direction 引数にデフォルトのキーワードである DESCENDING を使用して RANK 関数で値をランク付けした場合、最も高い値が 1 位、2 番目に高い値が 2 位という順番でランク付けされます。形式ごとの RANK 関数の動作は次のとおりです。
- 数値: 最も大きい数値が 1 位としてランク付けされます。
- 日付: 直近の日付が 1 位としてランク付けされます。
- 時間軸: 直近の時間軸が 1 位としてランク付けされます。
ディメンションが複数ある場合のランク付け動作
「Source values」引数があるモジュールを他の複数のディメンション (Time と Versions 以外) に適用した場合、これらのディメンションのすべての組み合わせにランキングが適用されます。これには、データのビューに現在表示されていない値も含まれます。
たとえば、「Region」と「Product」に適用される、「Sales」と「Sales Rank」という二つのライン アイテムを含むモジュールがあり、50 の地域で 100 種類の商品が販売されているとします。
Sales Rank = RANK(Sales)
こちらの例では、式が 1 から 5,000 の範囲でランクを返しており、すべてのページにわたって「Product」と「Region」の各組み合わせをランク付けしています。
ユーザー リストでの RANK の使用
RANK 関数を使ってユーザー リストを参照できます。ただし、ユーザー リスト内の特定のユーザーは、内容が変化して式が無効になる可能性がある本番データであるため参照できません。
制約
セルの上限
Classic 計算エンジンでは、サーバーの動作を遅くする大規模なデータ セットのランク付けを防ぐために、Anaplan では 5,000 万セルまでという人為的な上限が設定されています。5,000 万超のセルを対象に RANK 関数が使用されると、そのモデルはロールバックし、通知が表示されます。
5,000 万セルという上限は、集計値または時間とバージョンのリストには適用されません。つまり、集計されていないセルが 5,000 万個未満の場合、セルの数が 5,000 万個以上あるライン アイテムで RANK 関数が使用できます。
RANK 関数の対象となるセルの数が増えるにつれ、計算にかかる時間も比例して長くなります。
正の無限大、負の無限大、及び NaN
無限大と NaN は自動的に RANK 関数から除外され、結果として NaN が返されます。
計算エンジンの機能の違い
Polaris では、ターゲットがライン アイテム サブセットでディメンション化されている場合、又は関数でライン アイテム サブセットを参照している場合は RANK を使用できません。
Classic では、Include value 引数の値が FALSE の場合、ランキングから値が除外され、結果として NaN (非数) が返されます。Polaris では値として 0 (ゼロ) が返されます。
Classic では、Ranking groups 引数にテキスト データ型を使用できます。Polaris では使用できません。
Polaris にはセルの上限がありません。Classic ではセルの上限が 5,000 万個までとなっています。
Classic では、無限大と NaN は自動的に RANK 関数から除外され、結果として NaN が返されます。Polaris では、NaN 値は自動的に RANK 関数から除外され、結果として 0 が返されます。無限大も削除されます。
同等の操作が行える Excel の関数
例
Source values 引数しかない RANK の例
London | Birmingham | UK | Paris | Lyon | France | Munich | Berlin | Germany | New York | Los Angeles | USA | Total Company | |
Sales | 11,000 | 20,000 | 31,000 | 14,000 | 14,000 | 28,000 | 25,000 | 1,000 | 26,000 | 8,000 | 30,000 | 38,000 | 123,000 |
RANK (Sales) | 6 | 3 | 4 | 4 | 2 | 8 | 7 | 1 |
この例では列に「Organization」リストがあり、都市が地域の子になっています。行にはライン アイテムが二つあります。一つは「Sales」のためのもので、もう一つは RANK 関数を含む式のためのものです。
「Sales」ライン アイテムの都市が値を基準にランク付けされます。親である地域は集計であるため、ランキングからは除外されます。
式には Source values 引数しかないため、オプションの Direction 引数と Equal value behavior 引数にはデフォルトのキーワードが使用されます。
Direction 引数にはデフォルトのキーワードである DESCENDING が使用されます。つまり、「Sales」ライン アイテムで値が最も大きい都市がランキングで 1 位になります。
Equal value behavior 引数にはデフォルトのキーワードである MINIMUM が使用されます。つまり、「Sales」ライン アイテムで値が同じ「Paris」と「Lyon」がどちらもランキングで最下位になります。今回の例では 4 位になります。
Direction 引数の例
London | Birmingham | UK | Paris | Lyon | France | Munich | Berlin | Germany | New York | Los Angeles | USA | Total Company | |
Sales | 11,000 | 20,000 | 31,000 | 14,000 | 14,000 | 28,000 | 25,000 | 1,000 | 26,000 | 8,000 | 30,000 | 38,000 | 123,000 |
RANK (Sales, DESCENDING) | 6 | 3 | 4 | 4 | 2 | 8 | 7 | 1 | |||||
RANK (Sales, ASCENDING) | 3 | 6 | 4 | 4 | 7 | 1 | 2 | 8 |
こちらの例は、Direction 引数の二つのキーワードの動作を示したものです。
DESCENDING キーワードを使用すると、「Sales」ライン アイテムで最も大きい値が 1 位になり、最も小さい値が 8 位になります。
ASCENDING キーワードを使用すると、「Sales」ライン アイテムで最も小さい数字が 1 位になり、最も大きい値が 8 位になります。
Equal value behavior 引数の例
London | Birmingham | UK | Paris | Lyon | France | Munich | Berlin | Germany | New York | Los Angeles | USA | Total Company | |
Sales | 11,000 | 20,000 | 31,000 | 14,000 | 14,000 | 28,000 | 25,000 | 1,000 | 26,000 | 8,000 | 30,000 | 38,000 | 123,000 |
RANK (Sales, DESCENDING, MINIMUM) | 6 | 3 | 4 | 4 | 7 | 1 | 2 | 8 | |||||
RANK (Sales, DESCENDING, MAXIMUM) | 6 | 3 | 5 | 5 | 7 | 1 | 2 | 8 | |||||
RANK (Sales, DESCENDING, AVERAGE) | 6 | 3 | 4.5 | 4.5 | 7 | 1 | 2 | 8 | |||||
RANK (Sales, DESCENDING, SEQUENTIAL) | 6 | 3 | 4 | 5 | 7 | 1 | 2 | 8 |
こちらの例は、Equal value behavior 引数の四つのキーワードの動作を示したものです。「Sales」ライン アイテムの「Paris」と「Lyon」の値はどちらも「14,000」であるため、各キーワードの動作の違いがわかりやすくなっています。
- MINIMUM キーワードでは、「Paris」と「Lyon」の両方に、数値的により低いランクである 4 が割り当てられます。
- MAXIMUM キーワードでは、「Paris」と「Lyon」の両方に、数値的により高いランクである 5 が割り当てられます。
- AVERAGE キーワードでは、「Paris」と「Lyon」の両方にそれぞれのランクの平均である 4.5 が割り当てられます。
- SEQUENTIAL キーワードでは、親階層に関係なく、「Paris」と「Lyon」の両方にベースとなるリストの順序でランクが割り当てられます。
Include value 引数の例 (Classic)
London | Birmingham | UK | Paris | Lyon | France | Munich | Berlin | Germany | New York | Los Angeles | USA | Total Company | |
Sales | 11,000 | 20,000 | 31,000 | 14,000 | 14,000 | 28,000 | 25,000 | 1,000 | 26,000 | 8,000 | 30,000 | 38,000 | 123,000 |
Include in Ranking? | |||||||||||||
RANK(Sales, DESCENDING, MINIMUM, Sales > 10000 AND Sales < 24000) | 4 | 1 | 2 | 2 | NaN | NaN | NaN | NaN | |||||
RANK(Sales, DESCENDING, MINIMUM, Sales > 10000) | 6 | 3 | 4 | 4 | 2 | NaN | NaN | 1 | |||||
RANK(Sales, DESCENDING, MINIMUM, Include in Ranking? = TRUE) | 5 | 2 | 3 | 3 | 1 | NaN | 6 | NaN |
注記:Polaris では、上記の includeRankingValue? が false のすべてのセルで、値が NaN ではなく 0 になります。
Include value 引数を使用すると、ブール形式のステートメントを使って、値をランク付けするかどうかを指定できます。ブール形式のライン アイテムへの参照を使用することも、式に直接入力されたブール形式のステートメントを使用することもできます。
最初の二つの式では、以下のいずれかを満たすことを条件として指定するブール形式のステートメントによって、ランキング対象にする値を決定しています。
- 10,000 から 24,000 の範囲に収まる
- 10,000 より大きい
三つ目の式には、ブール形式のライン アイテム「Include in Ranking?」への参照があります。そのため、「Include in Ranking?」ライン アイテムで値が TRUE になっている、「Organization」リストのアイテムだけがランク付けされます。
Ranking groups 引数の例
London | Birmingham | UK | Paris | Lyon | France | Munich | Berlin | Germany | New York | Los Angeles | USA | Total Company | |
Sales | 11,000 | 20,000 | 31,000 | 14,000 | 14,000 | 28,000 | 25,000 | 1,000 | 26,000 | 8,000 | 30,000 | 38,000 | 123,000 |
Store Type | Ministore | Superstore | Ministore | Ministore | Superstore | Warehouse | Warehouse | Superstore | |||||
Opening Date | 20/3/20/21 | 20/03/2021 | 20/03/2021 | 29/04/2020 | 29/04/2020 | 20/03/2021 | 25/06/2020 | 05/07/2020 | |||||
RANK(Sales, DESCENDING, MINIMUM, Sales > 0, PARENT(ITEM(Organization))) | 2 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | |||||
RANK(Sales, DESCENDING, MINIMUM, Sales > 0, Store Type) | 2 | 3 | 1 | 1 | 2 | 2 | 1 | 1 | |||||
RANK(Sales, DESCENDING, MINIMUM, Sales > 0, Opening Date) | 3 | 1 | 2 | 2 | 1 | 4 | 1 | 1 | |||||
RANK(Sales, DESCENDING, MINIMUM, Sales > 0, YEAR(Opening Date)) | 3 | 1 | 2 | 3 | 2 | 4 | 4 | 1 |
Ranking groups 引数を使用すると、条件を指定してサブグループ内でデータをランク付けできます。上記の表にある四つのサンプル式は、Ranking groups 引数で使用される次のデータの種類を示したものです。
- 「Organization」リスト内の各担当地域の親アイテム (PARENT 関数と ITEM 関数を組み合わせて取得)。この場合、担当地域は地域ごとにランク付けされます。たとえば、「UK」の場合は「London」と「Birmingham」、「France」の場合は「Paris」と「Lyon」でランク付けが行われます。
- 「Organization」リスト内の各担当地域の店舗タイプを含む、リスト形式の「Store Type」ライン アイテム。担当地域は店舗タイプごとにグループ内でランク付けされます。
- 各担当地域の「Opening date」。開店日が同じ担当地域どうしでランク付けが行われます。
- 該当する日付の年を返すために YEAR 関数で使用される各担当地域の「Opening date」。開店日が同じ年の担当地域どうしでランク付けが行われます。
時間軸形式と日付形式のライン アイテムの例
Store 1 | Store 2 | Store 3 | Store 4 | Store 5 | Store 6 | Store 7 | Store 8 | |
Store Closure Date | 01/01/21 | 02/06/21 | 16/07/21 | 04/03/21 | 14/08/21 | 30/04/21 | 10/09/21 | |
RANK(Store Closure Date, ASCENDING) | 2 | 5 | 6 | 3 | 7 | 1 | 4 | 8 |
Store Open Time Period | Jan 19 | Mar 19 | Jul 19 | Oct 19 | Sep 19 | Jun 19 | Apr 19 | |
| 2 | 3 | 6 | 8 | 7 | 1 | 5 | 4 |
Source values 引数には日付形式または時間軸形式の値を使用することもできます。これらの形式の値を使用すると、値は時系列順にランク付けされます。
Direction 引数にデフォルトのキーワードである DESCENDING を使用した場合、最新の値が 1 位、2 番目に新しい値が 2 位という順番でランク付けされます。
Direction 引数に ASCENDING キーワードを使用した場合、最も古い値が 1 位、2 番目に古い値が 2 位という順番でランク付けされます。
Classic では、日付形式または時間軸形式の値における空白の値は、RANK 関数では最も古い値としてランク付けされます。そのため、こちらの例では、DESCENDING キーワードの場合は 8 位、ASCENDING キーワードの場合は 1 位に空白の値がランク付けされています。Polaris では、空白はランク付けされず、RANK 関数で 0 が返されます。