Condividi tramite


CurrentOrdinal (MDX)

Restituisce il numero di iterazioni corrente da un set durante l'iterazione.

Sintassi

Set_Expression.CurrentOrdinal

Argomenti

  • Set_Expression
    Espressione MDX (Multidimensional Expression) valida che restituisce un set.

Osservazioni

Quando vengono eseguite iterazioni in un set, ad esempio con le funzioni Filter (MDX) o Generate (MDX), la funzione CurrentOrdinal restituisce il numero di iterazioni.

Esempi

Nel semplice esempio che segue viene illustrato come utilizzare CurrentOrdinal con Generate per restituire una stringa contenente il nome e la relativa posizione di ogni elemento in un set:

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'utilizzo pratico di CurrentOrdinal è limitato ai calcoli molto complessi. Nell'esempio seguente viene restituito il numero dei prodotti unici contenuti nel set, utilizzando la funzione Order per ordinare le tuple non vuote prima di applicare la funzione Filter. La funzione CurrentOrdinal consente di confrontare ed eliminare i valori equivalenti.

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]