Share via


CurrentOrdinal (MDX)

Devuelve el número de iteración actual dentro de un conjunto durante la iteración.

Sintaxis

Set_Expression.CurrentOrdinal

Argumentos

  • Set_Expression
    Expresión MDX válida que devuelve un conjunto.

Comentarios

Al iterar en un conjunto, al igual que con las funciones Filter (MDX) o Generate (MDX), la función CurrentOrdinal devuelve el número de iteración.

Ejemplos

En el siguiente ejemplo simple se muestra el modo de usar CurrentOrdinal junto con Generate para devolver una cadena que contiene el nombre de cada uno de los elementos de un conjunto con su posición en el conjunto:

WITH SET MySet AS [Customer].[Customer Geography].[Country].MEMBERS

MEMBER MEASURES.CURRENTORDINALDEMO AS

GENERATE(MySet, CSTR(MySet.CURRENTORDINAL) + ") " + MySet.CURRENT.ITEM(0).NAME, ", ")

SELECT MEASURES.CURRENTORDINALDEMO ON 0

FROM [Adventure Works]

El uso práctico de CurrentOrdinal se limita a cálculos muy complejos. 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
    , NOT((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