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