CurrentOrdinal (MDX)

Gibt während der Iteration die aktuelle Iterationsnummer innerhalb einer Menge zurück.

Syntax

  
Set_Expression.CurrentOrdinal  

Argumente

Set_Expression
Ein gültiger Multidimensional Expressions (MDX)-Ausdruck, der eine Menge zurückgibt.

Bemerkungen

Beim Durchlaufen einer Menge, wie etwa 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 Zeichenkette zurückzugeben, die den Namen jedes Elements in einer Menge sowie dessen 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 Anwendung von CurrentOrdinal beschränkt sich auf sehr komplexe Berechnungen. Das folgende Beispiel gibt die Anzahl der Produkte in der Menge zurück, die eindeutig sind, wobei die Order-Funktion verwendet wird, um die nicht-leeren Tupel zu ordnen, bevor die Filterfunktion verwendet wird. Die Funktion CurrentOrdinal wird verwendet, um Gleichstellungen zu vergleichen und zu eliminieren.

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]