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]