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])