Rank (MDX)
Devuelve el intervalo 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 (Expresiones multidimensionales) 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.
Comentarios
Si se especifica una expresión numérica, la función Rank determina el rango basado en uno para la tupla especificada mediante la evaluación de la expresión numérica especificada en la tupla. Si se especifica una expresión numérica, la función Rank asigna la misma clasificación a las tuplas con valores duplicados en el 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 el rango 1, (a,b)
y (c,d)
tendrían el rango 1. Sin embargo, la tupla (e,f)
tendría el rango 3. No podría haber ninguna tupla en este conjunto con el rango 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
En el ejemplo siguiente se devuelve el conjunto de tuplas que contienen clientes y fechas de compra, mediante 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].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]
En el ejemplo siguiente se usa la función Order , en lugar de la función Rank , para clasificar los miembros de la jerarquía City según la medida Reseller Sales Amount y, a continuación, mostrarlos en orden clasificado. Mediante el uso de la función Order para ordenar primero el conjunto de miembros de la jerarquía city, la ordenación solo se realiza una vez y, a continuación, va seguida de un examen lineal antes de presentarse en orden ordenado.
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]