機械翻訳について

@RANK

指定されたデータ・セット内の値について、指定されたメンバーまたは指定された値のランクを返します。 値のランクは、ソートされたデータ・セット内での位置(ランク)と同じです。

構文

@RANK (rankOrderType, SKIPNONE | SKIPMISSING | SKIPZERO | SKIPBOTH, value, XrangeList)

パラメータ

rankOrderType
データ・セットをソートする順序のタイプ。 オプション:
  • ASCEND XrangeListにリストされている値を昇順でランク付けします。
  • DESCEND XrangeListにリストされた値を降順でランク付けします。 これはデフォルトです。
SKIPNONE

ランクの計算時に、データ・セットで指定されたすべてのセルを、その内容に関係なく含めます。

SKIPMISSING

ランクの計算中に、データ・セットからすべての#MISSING値を除外します。

SKIPZERO

ランクの計算時に、データ・セットからすべてのゼロ(0)値を除外します。

SKIPBOTH

ランクの計算時に、データ・セットからすべてのゼロ(0)値および#MISSING値を除外します。

value

(1)ランクが計算されるメンバーまたはメンバーの組合せ、または(2)ランクが計算される定数値。

XrangeList

ランクが計算される数値のリスト。 このトピック全体を通して、総称して「データ・セット」と呼びます。

有効なメンバー名、メンバー名のカンマ区切りリスト、ディメンション間メンバー、またはメンバー・セット関数または範囲関数(@XRANGEを含む)からの戻り値を指定できます。

XrangeListの詳細は、「範囲リスト・パラメータ」を参照してください。

ノート

  • SKIP処理の後、@RANKはデータ・セットを降順(15341、9650、6556、4255、1989など)または昇順(1989、4255、6556、9650、15341)でソートします。 値のランクは、降順でソートされたデータ・セット内の位置を識別します(たとえば、15341はランク1、1989はランク5です)

  • #MISSINGの入力値は#MISSINGを返します。#MISSINGは、SKIP処理の後、比較する値がない場合にも返されます。

  • @RANKでは、重複する値に同じランクが割り当てられますが、重複する値が存在するとランク番号に影響します。 たとえば、値リストに[2,2,4,5]が含まれている場合、Essbaseは最初にリストを降順にソートしてから、ランク付けします: [5]のランクは1、[4]のランクは2、[2]のランクは3です。 この場合、ランク4の値はありません。

  • valueが定数値で、その値がデータ・セット(XrangeList)に含まれていない場合、Essbaseは定数値をリストに挿入し、それに応じてランク付けします。 たとえば、値リストに[2,4,6,13]が含まれており、このリストの値を(降順に)ランク付けする場合、Essbaseは次のように動作します:

    1. リストを降順にソートします[13,6,4,2]

    2. [3]をリスト[13,6,4,3,2]に挿入

    3. リスト内のランク[3]: この場合、[3]のランクは4です。

  • 計算スクリプトで@RANKを使用する場合は、FIX文内で使用します。 FIXを使用する必要はありませんが、計算のパフォーマンスが向上する場合があります。

  • 疎ディメンションの大規模な範囲で@RANKを使用する場合、計算機キャッシュのサイズを増やす必要がある場合があります。

例 1

次の例は、Sample Basicデータベースに基づいています。 Measuresディメンションに追加のメンバーSales Rankが含まれているとします。 Essbaseでは、一連の製品の販売値がランク付けされます:

"Sales Rank" = @RANK(SKIPBOTH,Sales,
@RANGE(Sales,@LEVMBRS(Product,1)));

この例では、次のレポートが作成されます SKIPBOTHが式で指定されているため、Sales->Diet Drinksの#MI値はランク付けされたリストに含まれません:

                 New York   Actual    Jan
                   Sales       Sales Rank
                   =====       ==========
Colas               678            1
Root Beer           551            4
Cream Soda          663            2
Fruit Soda          587            3
Diet Drinks         #MI          #MI

例 2

次の例は、Sample Basicデータベースに基づいています。 Measuresディメンションに追加メンバーExpense Rankが含まれているとします。 Essbaseでは、一連の製品の合計費用の値が昇順でランク付けされます(最小費用にはランク1が割り当てられます)。

この例では、ASCENDを使用して値を昇順にランク付けします。

"Expense Rank" = @RANK(ASCEND,SKIPBOTH,"Total Expenses",@RANGE("Total Expenses",@LEVMBRS(Product,1)));

この例では、次のレポートが作成されます

                 New York   Actual    Jan
                   Total Expense       Expense Rank
                   =============       ==========
Colas               145                   2
Root Beer           215                   4
Cream Soda          213                   3
Fruit Soda          100                   1
Diet Drinks         #MI                 #MI

例 3

次の例は、YearディメンションがSample Basicに追加されていることを前提としています。 データ・セット内のディメンション間メンバーを使用して値をランク付けします。

FIX(Product)
"Sales Rank" = @RANK(SKIPBOTH,Sales,@XRANGE("2011"->"Sep", "2012"->"Mar"));
ENDFIX

前述の計算は、XrangeListで指定された次の多ディメンション範囲で実行されます:


2011->Sep
2011->Oct
2011->Nov
2011->Dec
2012->Jan
2012->Feb
2012->Mar

関連項目