共用方式為


Rank (MDX)

傳回指定集合中特定 Tuple 的次序 (以 1 為基底)。

語法

Rank(Tuple_Expression, Set_Expression [ ,Numeric Expression ] )

引數

  • Tuple_Expression
    傳回 Tuple 的有效多維度運算式 (MDX) 運算式。

  • Set_Expression
    傳回集合的有效多維度運算式 (MDX) 運算式。

  • Numeric_Expression
    有效的數值運算式,這通常是傳回數字之資料格座標的多維度運算式 (MDX) 運算式。

備註

如果指定數值運算式,Rank 函數會對 Tuple 評估指定的數值運算式,決定已指定之 Tuple 的次序 (以一為基底)。如果指定數值運算式,Rank 函數會將相同的次序指派給集合中有重複值的 Tuple。指派相同的順序給重複值,會影響集合中後續 Tuple 的順序。例如,有個集合由以下 Tuple 構成:{(a,b), (e,f), (c,d)}。Tuple (a,b) 和 Tuple (c,d) 擁有相同的值。如果 Tuple (a,b) 的次序為 1,則 (a,b) 和 (c,d) 的次序都會是 1。但是,Tuple (e,f) 的次序會是 3。此集合中可能沒有次序為 2 的 Tuple。

如果沒有指定數值運算式,Rank 函數會傳回指定之 Tuple 以一為基底的序數位置。

Rank 函數不會排列集合的順序。

範例

下列範例使用 Filter、NonEmpty、Item 和 Rank 函數,傳回包含客戶和購買日期的 Tuple 集合,以尋找每個客戶上次購買的日期。

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 函數 (而非 Rank 函數),根據 [轉售商銷售數量] 量值來指定 [縣 (市)] 階層的成員次序,然後依此次序顯示成員。藉由使用 Order 函數,先排序 City 階層的成員集合,排序只進行一次,接著執行線性掃描,然後再依排序順序呈現。

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]