Filter (MDX)

指定されたセットを検索条件に基づいて絞り込み、結果セットを返します。

構文

 Filter(Set_Expression, Logical_Expression )

引数

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

  • Logical_Expression
    true または false に評価される有効な多次元式 (MDX) 論理式です。

説明

Filter 関数は、指定されたセット内の各組に対して、指定された論理式を評価します。この関数は、指定されたセット内の組のうち、この論理式が true と評価される各組で構成されるセットを返します。true と評価される組がない場合は、空のセットを返します。

Filter 関数の機能は、IIf 関数の機能に似ています。ただし IIf 関数は MDX 論理式の評価結果に基づいて、2 つのオプションのうちの 1 つのみを返しますが、Filter 関数は指定された検索条件を満たす組のセットを返します。つまり、Filter 関数は、セット内の各組に対して IIf(Logical_Expression, Set_Expression.Current, NULL) を実行して、その結果セットを返します。

次の例では、クエリの行軸で Filter 関数を使用して、Internet Sales Amount が 10,000 米ドルを超える日付のみを返す方法を示します。

SELECT [Measures].[Internet Sales Amount] ON 0,

FILTER(

[Date].[Date].[Date].MEMBERS

, [Measures].[Internet Sales Amount]>10000)

ON 1

FROM

[Adventure Works]

Filter 関数は、計算されるメンバの定義内でも使用できます。次の例では、Adventure Works キューブの Date ディメンションに含まれている 2003 年の最初の 9 か月に関して集計された、Measures.[Order Quantity] メンバの合計を返しています。PeriodsToDate 関数で、Aggregate 関数の演算対象となるセット内の組を定義しています。Filter 関数は、返す組を、前の期間の Reseller Sales Amount メジャーの値よりも小さな値が含まれる組に限定しています。

WITH MEMBER Measures.[Declining Reseller Sales] AS Count
   (Filter
      (Existing
         (Reseller.Reseller.Reseller), 
            [Measures].[Reseller Sales Amount] < 
               ([Measures].[Reseller Sales Amount],[Date].Calendar.PrevMember)
        )
    )
MEMBER [Geography].[State-Province].x AS Aggregate 
( {[Geography].[State-Province].&[WA]&[US], 
   [Geography].[State-Province].&[OR]&[US] } 
)
SELECT NON EMPTY HIERARCHIZE 
   (AddCalculatedMembers 
      ({DrillDownLevel
         ({[Product].[All Products]})}
        )
    ) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS 
FROM [Adventure Works]
WHERE ([Geography].[State-Province].x, 
   [Date].[Calendar].[Calendar Quarter].&[2003]&[4],
   [Measures].[Declining Reseller Sales])