RANKCUMULATE 関数は、値をランク付けしてからそのランク順で値を累積します。グループごとに個別にランク付けを実行できます。
たとえば、RANKCUMULATE 関数を使用して、勤続年数順に従業員の売上収益を累積的に合計できます。この操作の例については「例」セクションを参照してください。
構文
RANKCUMULATE(Cumulation values, Ranking values [, Direction] [, Include value] [, Ranking groups])
引数
| 引数 | データ型 | 説明 |
| Cumulation values (必須) | 数値、ライン アイテム、プロパティ、又は式 | ランク付け基準に基づいて累積する数値です。 |
| Ranking values (必須) | 数値、日付、又は時間軸 ライン アイテム、プロパティ、又は式を使用できます。 | 累積の基となるランク付け基準です。 |
| Direction | キーワード | ランク付けする順序を決定します。 キーワードは |
| Include value | ブール値 | 値をランク付けするかどうかを決定します。 デフォルト値である TRUE では、値がランキング対象になります。 値が FALSE の場合、ランキングから値が除外され、結果として 0 が返されます。 |
| Ranking groups | 数値、ブール値、日付、時間軸、リスト。テキストは Classic でのみサポートされています。 | 指定した場合、値は Ranking groups 引数の各値とは無関係にランク付けされます。 |
RANKCUMULATE 関数は数値を返します。
Direction 引数のキーワード
| キーワード | 説明 |
| DESCENDING | このキーワードを使用すると、RANKCUMULATE 関数は最も高いソース値に 1 、2 番目に高いソース値に 2 という順番でランクを付けていきます。 |
| ASCENDING | Direction 引数を省略した場合のデフォルトのキーワードです。 このキーワードを使用すると、RANKCUMULATE 関数は最も低いソース値に 1 、2 番目に低いソース値に 2 という順番でランクを付けていきます。 |
計算エンジンの機能の違い
Polaris では、ターゲットがライン アイテム サブセットでディメンション化されている場合、又は関数でライン アイテム サブセットを参照している場合は RANKCUMULATE を使用できません。
Polaris にはセルの上限がありません。Classic ではセルの上限が 5,000 万個までとなっています。
Polaris では無限大がサポートされていませんが、Classic ではサポートされています。Classic では、累積ソースに無限大が含まれる場合、それ以降の結果は累積が終了するまでその無限大になります。ただし、逆の無限大がその後に来る場合、結果は NaN (非数) になります。Polaris では無限大の代わりに NaN が返されます。
Polaris では空白が整列されないため、ランク付けできません。RANKCUMULATE では、ランキング値が空白の場合にゼロが返されます。
Polaris では、ランキング値を BLANK リテラルにすることができます。たとえば、RANKCUMULATE(1, BLANK) は有効になりますが、この場合、関数では常にゼロが返されます。
Polaris では空白値のランクは 0 ですが、Classic では利用可能な最低ランクが割り当てられます。
構文の例
RANKCUMULATE(Revenue, Transaction Date, DESCENDING, Eligible transaction?, Region)
追加情報
さまざまなデータ型におけるランキングの動作
RANKCUMULATE 関数の Ranking values 引数には、数値形式、日付形式、又は時間軸形式のライン アイテム、プロパティ、又は式を使用できます。ただし、結果は常に数値で返されます。
Direction 引数にデフォルトのキーワードである ASCENDING を使用して RANKCUMULATE 関数で値をランク付けした場合、最も低い値が 1 位、2 番目に低い値が 2 位という順番でランク付けされます。RANKCUMULATE を何と組み合わせるかによって次のように動作が変わります。
- 数値: 最も大きい数値が 1 位としてランク付けされます。
- 日付: 最も先の将来の日付が 1 位としてランク付けされます。
- 時間軸: 最も先の将来の時間軸が 1 位としてランク付けされます。
ランクが同じ値がある場合の動作
Cumulation values 引数の二つの値が Ranking values 引数で同じランクになった場合、General Lists <ads-icons dimension-lists /> 内の関連するリスト アイテムの順番どおりにランク付けされます。
ユーザー リストでの RANKCUMULATE の使用
RANKCUMULATE 関数を使ってユーザー リストを参照できます。ただし、ユーザー リスト内の特定のユーザーは本番データであるため参照できません。これが変化して式が無効になる可能性があります。
制約
セルの上限
Classic エンジンでは、サーバーの動作を遅くする大規模なデータ セットのランク付けを防ぐために、5,000 万セルまでというセルの上限が設定されています。5,000 万個以上のセルを対象に RANKCUMULATE 関数が使用されると、モデルはロールバックされ、通知が表示されます。
5,000 万セルという上限は、集計値または時間とバージョンのリストには適用されません。つまり、集計されていないセルが 5,000 万個未満の場合、セルの数が 5,000 万個以上あるライン アイテムで RANKCUMULATE 関数を使用できます。
RANKCUMULATE 関数の対象となるセルの数が増えるにつれ、計算にかかる時間も比例して長くなります。
正の無限大、負の無限大、及び NaN
Ranking values 引数に正の無限大、負の無限大、又は NaN (非数) を使用すると、RANKCUMULATE 関数は 0 を返します。
累積ソースの制約
累積ソースが大きなデータ セットの場合、小数点以下の桁数が多い数値を追加すると、最下位の桁で浮動小数点エラーが発生する可能性があります。
同等の操作が行える Excel の関数
例
次の例では、列にリスト「Salespeople」があり、行にリスト アイテムがあります。
グローバル ランキングに基づく値の累積
この例は、Ranking groups パラメーターを使用せずに、営業担当者ごとの売上を追跡し、売上に基づいてボーナス ポイントを DESCENDING (降順) で累積するのに役立ちます。
| Alice | Bob | Carol | Dan | Ellie | Felix | |
| Sales | 200 | 300 | 400 | 500 | 600 | 700 |
| Bonus points | 5 | 10 | 20 | 15 | 25 | 80 |
Result
| 155 | 150 | 140 | 120 | 105 | 80 |
グループ内でのランキングによる値の累積
この例は、営業担当者ごとの売上を追跡し、「Region」ごとに売上に基づいてボーナス ポイントを ASCENDING (昇順) で累積するのに役立ちます。ここでは「Region」がリストになっています。
| Alice | Bob | Carol | Dan | Ellie | Felix | |
| Sales | 200 | 300 | 400 | 500 | 600 | 700 |
| Bonus points | 5 | 10 | 20 | 15 | 25 | 80 |
| Region | West | South | West | East | South | North |
Result
| 5 | 10 | 25 | 15 | 35 | 80 |