在迭代过程中返回集合内当前的迭代编号。
Syntax
Set_Expression.CurrentOrdinal
Arguments
Set_Expression
一个有效的多维表达式(MDX)表达式,返回集合。
Remarks
当遍历集合时,如使用 滤波器(MDX) 或 生成(MDX) 函数, CurrentOrdinal 函数返回迭代次数。
示例
以下简单示例展示了如何将 CurrentOrdinal 与 生成 配合返回包含集合中每个项名称及其位置的字符串:
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 函数对非空元组进行排序,再使用 滤波 器函数。 当前 序 函数用于比较和消除联系。
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]