次の方法で共有


CurrentOrdinal (MDX)

イテレーション中のセット内の現在のイテレーション番号を返します。

構文

  
Set_Expression.CurrentOrdinal  

引数

Set_Expression
セットを返す有効な多次元式 (MDX) 式。

解説

Filter (MDX) 関数や Generate (MDX) 関数など、セットを反復処理すると、CurrentOrdinal 関数は反復回数を返します。

次の簡単な例は 、CurrentOrdinalGenerate と共に使用して、セット内の各項目の名前とセット内の位置を含む文字列を返す方法を示しています。

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]  

参照

MDX 関数リファレンス (MDX)