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 関数は結果を数値形式で返します。

キーワード説明
DESCENDING

Direction 引数を省略した場合のデフォルトのキーワードです。

このキーワードを使用すると、RANK 関数は最も高いソース値に 1 、2 番目に高いソース値に 2 という順番でランクを付けていきます。 

ASCENDINGこのキーワードを使用すると、RANK 関数は最も低いソース値に 1 、2 番目に低いソース値に 2 という順番でランクを付けていきます。
キーワード説明
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」引数があるモジュールを他の複数のディメンション (TimeVersions 以外) に適用した場合、これらのディメンションのすべての組み合わせにランキングが適用されます。これには、データのビューに現在表示されていない値も含まれます。

たとえば、「Region」と「Product」に適用される、「Sales」と「Sales Rank」という二つのライン アイテムを含むモジュールがあり、50 の地域で 100 種類の商品が販売されているとします。

Sales Rank = RANK(Sales)

こちらの例では、式が 1 から 5,000 の範囲でランクを返しており、すべてのページにわたって「Product」と「Region」の各組み合わせをランク付けしています。

RANK 関数を使ってユーザー リストを参照できます。ただし、ユーザー リスト内の特定のユーザーは、内容が変化して式が無効になる可能性がある本番データであるため参照できません。

Classic 計算エンジンでは、サーバーの動作を遅くする大規模なデータ セットのランク付けを防ぐために、Anaplan では 5,000 万セルまでという人為的な上限が設定されています。5,000 万超のセルを対象に RANK 関数が使用されると、そのモデルはロールバックし、通知が表示されます。 

5,000 万セルという上限は、集計値または時間バージョンのリストには適用されません。つまり、集計されていないセルが 5,000 万個未満の場合、セルの数が 5,000 万個以上あるライン アイテムで RANK 関数が使用できます。

RANK 関数の対象となるセルの数が増えるにつれ、計算にかかる時間も比例して長くなります。

無限大と 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 が返されます。無限大も削除されます。


LondonBirminghamUKParisLyonFranceMunichBerlinGermanyNew YorkLos AngelesUSATotal Company
Sales11,00020,00031,00014,00014,00028,00025,0001,00026,0008,00030,00038,000123,000
RANK (Sales)63
44
28
71

この例では列に「Organization」リストがあり、都市が地域の子になっています。行にはライン アイテムが二つあります。一つは「Sales」のためのもので、もう一つは RANK 関数を含む式のためのものです。

Sales」ライン アイテムの都市が値を基準にランク付けされます。親である地域は集計であるため、ランキングからは除外されます。

式には Source values 引数しかないため、オプションの Direction 引数と Equal value behavior 引数にはデフォルトのキーワードが使用されます。

Direction 引数にはデフォルトのキーワードである DESCENDING が使用されます。つまり、「Sales」ライン アイテムで値が最も大きい都市がランキングで 1 位になります。

Equal value behavior 引数にはデフォルトのキーワードである MINIMUM が使用されます。つまり、「Sales」ライン アイテムで値が同じ「Paris」と「Lyon」がどちらもランキングで最下位になります。今回の例では 4 位になります。


LondonBirminghamUKParisLyonFranceMunichBerlinGermanyNew YorkLos AngelesUSATotal Company
Sales11,00020,00031,00014,00014,00028,00025,0001,00026,0008,00030,00038,000123,000
RANK (Sales, DESCENDING)63
44
28
71

RANK (Sales, ASCENDING)36
44
71
28

こちらの例は、Direction 引数の二つのキーワードの動作を示したものです。

DESCENDING キーワードを使用すると、「Sales」ライン アイテムで最も大きい値が 1 位になり、最も小さい値が 8 位になります。

ASCENDING キーワードを使用すると、「Sales」ライン アイテムで最も小さい数字が 1 位になり、最も大きい値が 8 位になります。


LondonBirminghamUKParisLyonFranceMunichBerlinGermanyNew YorkLos AngelesUSATotal Company
Sales11,00020,00031,00014,00014,00028,00025,0001,00026,0008,00030,00038,000123,000
RANK (Sales, DESCENDING, MINIMUM)63
44
71
28

RANK (Sales, DESCENDING, MAXIMUM)63
55
71
28

RANK (Sales, DESCENDING, AVERAGE)63
4.54.5
71
28

RANK (Sales, DESCENDING, SEQUENTIAL)63
45
71
28

こちらの例は、Equal value behavior 引数の四つのキーワードの動作を示したものです。「Sales」ライン アイテムの「Paris」と「Lyon」の値はどちらも「14,000」であるため、各キーワードの動作の違いがわかりやすくなっています。

  • MINIMUM キーワードでは、「Paris」と「Lyon」の両方に、数値的により低いランクである 4 が割り当てられます。
  • MAXIMUM キーワードでは、「Paris」と「Lyon」の両方に、数値的により高いランクである 5 が割り当てられます。
  • AVERAGE キーワードでは、「Paris」と「Lyon」の両方にそれぞれのランクの平均である 4.5 が割り当てられます。
  • SEQUENTIAL キーワードでは、親階層に関係なく、「Paris」と「Lyon」の両方にベースとなるリストの順序でランクが割り当てられます。

LondonBirminghamUKParisLyonFranceMunichBerlinGermanyNew YorkLos AngelesUSATotal Company
Sales11,00020,00031,00014,00014,00028,00025,0001,00026,0008,00030,00038,000123,000
Include in Ranking?






RANK(Sales, DESCENDING, MINIMUM, Sales > 10000 AND Sales < 24000)41
22
NaNNaN
NaNNaN

RANK(Sales, DESCENDING, MINIMUM, Sales > 10000)63
44
2NaN
NaN1

RANK(Sales, DESCENDING, MINIMUM, Include in Ranking? = TRUE)52
33
1NaN
6NaN

注記:Polaris では、上記の includeRankingValue? が false のすべてのセルで、値が NaN ではなく 0 になります。 

Include value 引数を使用すると、ブール形式のステートメントを使って、値をランク付けするかどうかを指定できます。ブール形式のライン アイテムへの参照を使用することも、式に直接入力されたブール形式のステートメントを使用することもできます。

最初の二つの式では、以下のいずれかを満たすことを条件として指定するブール形式のステートメントによって、ランキング対象にする値を決定しています。

  • 10,000 から 24,000 の範囲に収まる
  • 10,000 より大きい

三つ目の式には、ブール形式のライン アイテム「Include in Ranking?」への参照があります。そのため、「Include in Ranking?」ライン アイテムで値が TRUE になっている、「Organization」リストのアイテムだけがランク付けされます。


LondonBirminghamUKParisLyonFranceMunichBerlinGermanyNew YorkLos AngelesUSATotal Company
Sales11,00020,00031,00014,00014,00028,00025,0001,00026,0008,00030,00038,000123,000
Store TypeMinistoreSuperstore
MinistoreMinistore
SuperstoreWarehouse
WarehouseSuperstore

Opening Date20/3/20/2120/03/2021
20/03/202129/04/2020
29/04/202020/03/2021
25/06/202005/07/2020

RANK(Sales, DESCENDING, MINIMUM, Sales > 0, PARENT(ITEM(Organization)))21
11
12
21

RANK(Sales, DESCENDING, MINIMUM, Sales > 0, Store Type)23
11
22
11

RANK(Sales, DESCENDING, MINIMUM, Sales > 0, Opening Date)31
22
14
11

RANK(Sales, DESCENDING, MINIMUM, Sales > 0, YEAR(Opening Date))31
23
24
41

Ranking groups 引数を使用すると、条件を指定してサブグループ内でデータをランク付けできます。上記の表にある四つのサンプル式は、Ranking groups 引数で使用される次のデータの種類を示したものです。

  • Organization」リスト内の各担当地域の親アイテム (PARENT 関数と ITEM 関数を組み合わせて取得)。この場合、担当地域は地域ごとにランク付けされます。たとえば、「UK」の場合は「London」と「Birmingham」、「France」の場合は「Paris」と「Lyon」でランク付けが行われます。
  • Organization」リスト内の各担当地域の店舗タイプを含む、リスト形式の「Store Type」ライン アイテム。担当地域は店舗タイプごとにグループ内でランク付けされます。
  •  各担当地域の「Opening date」。開店日が同じ担当地域どうしでランク付けが行われます。
  • 該当する日付の年を返すために YEAR 関数で使用される各担当地域の「Opening date」。開店日が同じ年の担当地域どうしでランク付けが行われます。

Store 1Store 2Store 3Store 4Store 5Store 6Store 7Store 8
Store Closure Date01/01/2102/06/2116/07/2104/03/2114/08/21
30/04/2110/09/21
RANK(Store Closure Date, ASCENDING)25637148
Store Open Time PeriodJan 19Mar 19Jul 19Oct 19Sep 19
Jun 19Apr 19

RANK(Store Open Time Period, ASCENDING)


23687154

Source values 引数には日付形式または時間軸形式の値を使用することもできます。これらの形式の値を使用すると、値は時系列順にランク付けされます。

Direction 引数にデフォルトのキーワードである DESCENDING を使用した場合、最新の値が 1 位、2 番目に新しい値が 2 位という順番でランク付けされます。

Direction 引数に ASCENDING キーワードを使用した場合、最も古い値が 1 位、2 番目に古い値が 2 位という順番でランク付けされます。

Classic では、日付形式または時間軸形式の値における空白の値は、RANK 関数では最も古い値としてランク付けされます。そのため、こちらの例では、DESCENDING キーワードの場合は 8 位、ASCENDING キーワードの場合は 1 位に空白の値がランク付けされています。Polaris では、空白はランク付けされず、RANK 関数で 0 が返されます。