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.
Notes
Lorsque vous procédez à une itération dans un jeu, notamment avec les fonctions Filter (MDX) ou Generate (MDX), la fonction CurrentOrdinal retourne le numéro d'itération.
Exemples
L'exemple simple suivant illustre l'utilisation de CurrentOrdinal avec Generate pour retourner une chaîne qui contient le nom de chaque élément dans un jeu avec sa position dans le jeu :
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 ci-dessous retourne le nombre de produits uniques dans le jeu à 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]