CurrentOrdinal (MDX)
イテレーション中のセット内の現在のイテレーション番号を返します。
構文
Set_Expression.CurrentOrdinal
引数
Set_Expression
セットを返す有効な多次元式 (MDX) 式。
解説
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 の実用的な使用は、非常に複雑な計算に限定されます。 次の例では、Filter 関数を使用する前に、Order 関数を使用して空でないタプルを並べ替えて、一意のセット内の製品の数を返します。 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]