CurrentOrdinal (MDX)
Gibt die aktuelle Iterationsnummer in einer Menge während einer Iteration zurück.
Syntax
Set_Expression.CurrentOrdinal
Argumente
Set_Expression
Ein gültiger MDX-Ausdruck (Multidimensional Expressions), der eine Menge zurückgibt.
Bemerkungen
Beim Durchlaufen einer Gruppe, z. B. mit den Funktionen Filter (MDX) oder Generate (MDX), gibt die CurrentOrdinal-Funktion die Iterationsnummer zurück.
Beispiele
Das folgende einfache Beispiel zeigt, wie CurrentOrdinal mit Generate verwendet werden kann, um eine Zeichenfolge zurückzugeben, die den Namen jedes Elements in einer Gruppe zusammen mit seiner Position in der Gruppe enthält:
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]
Die praktische Nutzen von CurrentOrdinal beschränkt sich auf sehr komplexe Berechnungen. Im folgenden Beispiel wird die Anzahl der Produkte in der Gruppe zurückgegeben, die eindeutig sind, wobei die Order-Funktion verwendet wird, um die nicht leeren Tupel zu sortieren, bevor die Filterfunktion verwendet wird. Die CurrentOrdinal-Funktion wird verwendet, um Verbindungen zu vergleichen und zu beseitigen.
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]