ランク(MDX)

指定された集合内の任意のタプルの1基位ランクを返します。

構文

  
Rank(Tuple_Expression, Set_Expression [ ,Numeric Expression ] )  

引数

Tuple_Expression
タプルを返す有効な多次元表現(MDX)式。

Set_Expression
集合を返す有効な多次元表現(MDX)式。

Numeric_Expression
有効な数値式で、通常は数を返すセル座標の多次元表現(MDX)式です。

Remarks

数値式が指定されている場合、 ランク 関数は指定された数値式をその組に対して評価することで、そのタプルの1基位ランクを決定します。 数値式が指定されている場合、 Rank 関数は集合内で重複する値を持つタプルに同じランクを割り当てます。 同じランクを重複値に割り当てることは、集合内の後続のタプルのランクに影響を与えます。 例えば、集合は以下のタプル {(a,b), (e,f), (c,d)} から成ります。 タプル (a,b) はタプル (c,d)と同じ値を持ちます。 もしタプル (a,b) のランクが1なら、 (a,b)(c,d) もランクは1になります。 しかし、そのタプル (e,f) のランクは3となります。 この集合にランク2のタプルは存在し得なかった。

数値表現が指定されていない場合、 ランク 関数は指定されたタプルの1ベースの順序数位置を返します。

ランク関数は集合を順序付けません。

以下の例は、 FilterNonEmptyItemRank 関数を使って顧客が購入を行った最後の日付を検索することで、顧客と購入日を含むタプルの集合を返します。

WITH SET MYROWS AS FILTER  
   (NONEMPTY  
      ([Customer].[Customer Geography].MEMBERS  
         * [Date].[Date].[Date].MEMBERS  
         , [Measures].[Internet Sales Amount]  
      ) AS MYSET  
   , NOT(MYSET.CURRENT.ITEM(0)  
      IS MYSET.ITEM(RANK(MYSET.CURRENT, MYSET)).ITEM(0))  
   )  
SELECT [Measures].[Internet Sales Amount] ON 0,  
MYROWS ON 1  
FROM [Adventure Works]  

以下の例では、順位関数ではなくオーダー関数を用いて、リセラー販売額の指標に基づいてシティ階層のメンバーをランク付けし、順位付けで表示しています。 Order関数を使ってシティ階層のメンバー集合を最初に順序付けすることで、ソートは一度だけ行われ、その後線形スキャンを行ってからソート順に提示されます。

WITH   
SET OrderedCities AS Order  
   ([Geography].[City].[City].members  
   , [Measures].[Reseller Sales Amount], BDESC  
   )  
MEMBER [Measures].[City Rank] AS Rank  
   ([Geography].[City].CurrentMember, OrderedCities)  
SELECT {[Measures].[City Rank],[Measures].[Reseller Sales Amount]}  ON 0   
,Order  
   ([Geography].[City].[City].MEMBERS  
   ,[City Rank], ASC)  
    ON 1  
FROM [Adventure Works]