Share via


Rank (MDX)

指定したセット内の指定されたタプルの 1 から始まるランクを返します。

構文

  
Rank(Tuple_Expression, Set_Expression [ ,Numeric Expression ] )  

引数

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

Set_Expression
セットを返す有効な多次元式 (MDX) 式。

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

解説

数値式が指定されている場合、 Rank 関数は、指定された数値式をタプルに対して評価することによって、指定されたタプルの 1 から始まるランクを決定します。 数値式を指定すると、 Rank 関数は、セット内の重複する値を持つタプルに同じランクを割り当てます。 このように重複する値に同じランクを割り当てる動作は、セット内の後続の組のランクに影響を与えます。 たとえば、セットは、次のタプル で構成されます {(a,b), (e,f), (c,d)}。 タプル (a,b) の値は、タプル (c,d)と同じです。 タプル(a,b)のランクが 1 の場合、 と (c,d) の両方(a,b)のランクは 1 になります。 ただし、(e,f) のランクは 3 になります。 ランクが 2 の組はこのセットには存在できません。

数値式が指定されていない場合、 Rank 関数は、指定されたタプルの 1 から始まる序数位置を返します。

Rank 関数は、セットを並べ替えません。

次の例では、 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]  

次の例では、Rank 関数ではなく Order 関数を使用して、Reseller Sales Amount メジャーに基づいて City 階層のメンバーをランク付けし、ランク付けされた順序で表示します。 Order 関数を使用して最初に City 階層のメンバーのセットを並べ替えると、並べ替えは 1 回だけ行われ、その後に線形スキャンが実行されてから、並べ替えられた順序で表示されます。

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]  

参照

Order (MDX)
MDX 関数リファレンス (MDX)