CurrentOrdinal (MDX)
Retourne le numéro d'itération actuel dans un jeu lors d'une itération.
Syntaxe
Set_Expression.CurrentOrdinal
Arguments
Set_Expression
Expression MDX (Multidimensional Expressions) valide qui retourne un jeu.
Remarques
Lors de l’itération au sein d’un jeu, par exemple avec les fonctions Filter (MDX) ou Generate (MDX), la fonction CurrentOrdinal retourne le numéro d’itération.
Exemples
L’exemple simple suivant montre comment CurrentOrdinal peut être utilisé avec Generate pour renvoyer une chaîne contenant le nom de chaque élément d’un jeu ainsi que sa position dans l’ensemble :
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]
L'utilisation pratique de CurrentOrdinal est limitée aux calculs très complexes. L’exemple suivant retourne le nombre de produits uniques dans l’ensemble, à l’aide de la fonction Order pour classer les tuples non vides avant d’utiliser la fonction Filter . La fonction CurrentOrdinal est utilisée pour comparer et éliminer les liens.
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]