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]