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 (Expresiones multidimensionales) válida que devuelve un conjunto.
Comentarios
Al recorrer en iteración un conjunto, como con las funciones Filter (MDX) o Generate (MDX), la función CurrentOrdinal devuelve el número de iteración.
Ejemplos
En el ejemplo simple siguiente se muestra cómo se puede usar CurrentOrdinal con Generate para devolver una cadena que contiene el nombre de cada elemento de un conjunto junto 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. En el ejemplo siguiente se devuelve el número de productos del conjunto que son únicos, mediante la función Order para ordenar las tuplas no vacías antes de usar la función Filter . La función CurrentOrdinal se usa para comparar y eliminar los vínculos.
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]