Rank (MDX)
Devuelve el rango (con base uno) de una tupla especificada en un conjunto especificado.
Sintaxis
Rank(Tuple_Expression, Set_Expression [ ,Numeric Expression ] )
Argumentos
Tuple_Expression
Expresión MDX válida que devuelve una tupla.Set_Expression
Expresión MDX válida que devuelve un conjunto.Numeric_Expression
Expresión numérica válida que suele ser una expresión MDX de las coordenadas de celdas que devuelven un número.
Notas
Si se especifica una expresión numérica, la función Rank determina el rango basado en uno de la tupla especificada mediante la evaluación de la expresión numérica especificada con la tupla. Si se especifica una expresión numérica, la función Rank asigna el mismo rango a las tuplas con valores duplicados del conjunto. Esta asignación del mismo rango a valores duplicados afecta a los rangos de las tuplas subsiguientes del conjunto. Por ejemplo, un conjunto consta de las siguientes tuplas, {(a,b), (e,f), (c,d)}. La tupla (a,b) tiene el mismo valor que la tupla (c,d). Si la tupla (a,b) tiene un rango de 1, entonces tanto (a,b) como (c,d) tienen el rango de 1. Sin embargo, la tupla (e,f) tendría el rango de 3. En este conjunto no habría ninguna tupla con rango de 2.
Si no se especifica una expresión numérica, la función Rank devuelve la posición ordinal basada en uno de la tupla especificada.
La función Rank no ordena el conjunto.
Ejemplo
El ejemplo siguiente devuelve el conjunto de tuplas que contiene clientes y fechas de compra mediante el uso de las funciones Filter, NonEmpty, Item y Rank para buscar la última fecha en que cada cliente realizó una compra.
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]
El ejemplo siguiente utiliza la función Order, en lugar de la función Rank, para colocar en un rango a los miembros de la jerarquía City, de acuerdo con la medida Reseller Sales Amount, y mostrarlos en un orden de rango. Al utilizar la función Order para ordenar por primera vez el conjunto de miembros de la jerarquía City, dichos miembros se ordenan sólo una vez y luego se realiza una exploración lineal antes de la presentación ordenada.
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]