Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Возвращает текущий номер итерации внутри множества во время итерации.
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]