Share via


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.

Comentarios

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, tanto (a,b) como (c,d) tendrían un rango de 1. Sin embargo, la tupla (e,f) tendría un rango de 3. No podría haber ninguna tupla en este conjunto con un 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].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 usa 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 usar la función Order para ordenar por primera vez el conjunto de miembros de la jerarquía City, dichos miembros se ordenan solo 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]