Share via


Order (MDX)

Organiza los miembros de un conjunto especificado; opcionalmente preservando o rompiendo la jerarquía.

Sintaxis

Numeric expression syntax
Order(Set_Expression, Numeric_Expression 
[ , { ASC | DESC | BASC | BDESC } ] )

String expression syntax
Order(Set_Expression, String_Expression 
[ , { ASC | DESC | BASC | BDESC } ] )

Argumentos

  • 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.

  • String_Expression
    Expresión de cadena válida que suele ser una expresión MDX de las coordenadas de celdas que devuelven un número expresado como una cadena.

Notas

La función Order puede ser jerárquica (como se especifica al utilizar los indicadores ASC o DESC) o no jerárquica (como se especifica al utilizar los indicadores BASC o BDESC; la B indica que se "rompe (Break) la jerarquía"). Si se especifica ASC o DESC, la función Order dispone primero los miembros de acuerdo con su posición en la jerarquía y, a continuación, ordena cada nivel. Si se especifica BASC o BDESC, la función Order dispone los miembros en el conjunto sin tener en cuenta la jerarquía. Si no se especifica ningún indicador, ASC es el valor predeterminado.

Ejemplos

El siguiente ejemplo del cubo Adventure Works devuelve el número de pedidos de distribuidores del miembro [Sales Territory].[Northwest] y todos los antecesores de ese miembro. La función Order vuelve a ordenar el conjunto que incluye el miembro [Sales Territory].[Northwest] y sus antecesores para el eje ROWS. La función Order ordena el conjunto a partir del miembro superior hasta el miembro inferior en orden jerárquico como se determina en la jerarquía [Sales Territory].

SELECT
    Measures.[Reseller Order Count] ON COLUMNS,
    Order(
        Ascendants(
            [Sales Territory].[Sales Territory].[Northwest]
        ),
        DESC
    ) ON ROWS
FROM
    [Adventure Works]

El ejemplo siguiente devuelve la medida Reseller Sales de las cinco subcategorías de productos más vendidos, independientemente de su jerarquía, de acuerdo con Reseller Gross Profit. La función Subset se utiliza para devolver sólo las 5 primeras tuplas del conjunto una vez que el resultado se ordena mediante la función Order.

SELECT Subset
   (Order 
      ([Product].[Product Categories].[SubCategory].members
         ,[Measures].[Reseller Gross Profit]
         ,BDESC
      )
   ,0
   ,5
   ) ON 0
FROM [Adventure Works]

El ejemplo siguiente utiliza 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]

El ejemplo siguiente devuelve el número de productos del conjunto que son únicos mediante la función Order, que se utiliza para ordenar las tuplas que no están vacías antes de utilizar la función Filter. La función CurrentOrdinal se utiliza para comparar y eliminar valores equivalentes.

WITH MEMBER [Measures].[PrdTies] AS Count
   (Filter
      (Order
        (NonEmpty
          ([Product].[Product].[Product].Members
          , {[Measures].[Reseller Order Quantity]}
          )
       , [Measures].[Reseller Order Quantity]
       , BDESC
       ) AS OrdPrds
    , (OrdPrds.CurrentOrdinal < OrdPrds.Count 
       AND [Measures].[Reseller Order Quantity] = 
          ( [Measures].[Reseller Order Quantity]
            , OrdPrds.Item
               (OrdPrds.CurrentOrdinal
               )
            )
         )
         OR (OrdPrds.CurrentOrdinal > 1 
            AND [Measures].[Reseller Order Quantity] = 
               ([Measures].[Reseller Order Quantity]
               , OrdPrds.Item
                  (OrdPrds.CurrentOrdinal-2)
                )
             )
          )
       )
SELECT {[Measures].[PrdTies]} ON 0
FROM [Adventure Works]

Vea también

Referencia