排名 (MDX)
傳回指定集合中指定 Tuple 的一個型順位。
語法
Rank(Tuple_Expression, Set_Expression [ ,Numeric Expression ] )
引數
Tuple_Expression
傳回 Tuple 的有效多維度運算式 (MDX) 運算式。
Set_Expression
傳回集合的有效多維度運算式 (MDX) 運算式。
Numeric_Expression
有效的數值運算式,通常是傳回數位之儲存格座標的多維度運算式 (MDX) 運算式。
備註
如果指定了數值運算式, Rank 函式會根據 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。 此集合中沒有任何 Tuple 的排名為 2。
如果未指定數值運算式, Rank 函式會傳回指定元組的單一序數位置。
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 函式,根據 Reseller Sales Amount 量值來排名 City 階層的成員,然後依排名順序顯示這些成員。 藉由使用 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]