Rank (многомерные выражения)
Возвращает ранг (начиная с единицы) указанного кортежа в указанном наборе.
Синтаксис
Rank(Tuple_Expression, Set_Expression [ ,Numeric Expression ] )
Аргументы
Tuple_Expression
Допустимое многомерное выражение, возвращающее кортеж.Set_Expression
Допустимое многомерное выражение, возвращающее набор.Numeric_Expression
Допустимое числовое выражение (обычно многомерное выражение координат ячейки, возвращающее число).
Замечания
Если числовое выражение указано, функция Rank определяет ранг (начиная с единицы) указанного кортежа, вычисляя числовое выражение над кортежем. Если числовое выражение указано, функция Rank присваивает всем кортежам набора с одинаковым значением один и тот же ранг. Присваивание одинакового ранга кортежам с повторяющимися значениями изменяет ранги последующих кортежей набора. Например, пусть набор состоит из кортежей {(a,b), (e,f), (c,d)}. Значение кортежа (a,b) совпадает со значением (c,d). Если кортеж (a,b) имеет ранг 1, то и (a,b), и (c,d) будут иметь ранг 1. Однако кортеж (e,f) будет иметь ранг 3. Кортежа с рангом 2 в наборе может не быть.
Если числовое выражение не указано, функция Rank возвращает порядковый номер указанного кортежа, начиная с единицы.
Функция 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]
В следующем примере используется функция Order вместо Rank, что позволило ранжировать элементы иерархии City на основании меры Reseller Sales Amount и затем отобразить их в упорядоченном виде. Благодаря использованию функции 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]