Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает текущий номер итерации внутри множества во время итерации.
Syntax
Set_Expression.CurrentOrdinal
Arguments
Set_Expression
Допустимое выражение многомерных выражений (MDX), которое возвращает множество.
Remarks
При прохождении по множеству, например, с функциями Filter (MDX ) или Generate (MDX ), функция CurrentOrdinal возвращает номер итерации.
Примеры
Следующий простой пример показывает, как CurrentOrdinal можно использовать с Generate для возврата строки, содержащей имя каждого элемента в множестве вместе с его позицией в наборе:
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]
Практическое применение CurrentOrdinal ограничено очень сложными вычислениями. Следующий пример возвращает количество уникальных произведений множества, используя функцию Order для упорядочения непустых кортежей перед использованием функции Filter . Функция CurrentOrdinal используется для сравнения и устранения ничьих.
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]