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.
Hinweise
Beim Iterieren durch eine Menge, z. B. mithilfe der Filter (MDX)-Funktion oder der Generate (MDX)-Funktion, gibt die CurrentOrdinal-Funktion die Iterationsnummer zurück.
Beispiele
Das folgende einfache Beispiel zeigt, wie CurrentOrdinal zusammen mit Generate verwendet werden kann, um eine Zeichenfolge zurückzugeben, die den Namen jedes einzelnen Elements einer Menge mit seiner Position in der Menge 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 eindeutigen Produkte in der Menge zurückgegeben. Dabei wird die Order-Funktion verwendet, um die nicht leeren Tupel vor Verwendung der Filter-Funktion zu sortieren. Die CurrentOrdinal-Funktion wird zum Vergleichen und Ausschließen von Gleichrangigkeit verwendet.
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]