次の方法で共有


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 の場合は、(a,b) のランクも (c,d) のランクも 1 になります。ただし、(e,f) のランクは 3 になります。ランクが 2 の組はこのセットには存在できません。

数値式が指定されていない場合、Rank 関数は、指定された組の位置 (1 を基点とする序数) を返します。

Rank 関数はセットを順序付けしません。

次の例では、各顧客の最新購入日付を確認するために Filter 関数、NonEmpty 関数、Item 関数、および Rank 関数を使用して、顧客と購入日で構成される組のセットを返しています。

WITH SET MYROWS AS FILTER
   (NONEMPTY
      ([Customer].[Customer Geography].[Customer].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]