スライサー軸の内容の指定 (MDX)

スライサー軸は、多次元式 (MDX) の SELECT ステートメントから返されるデータを絞り込み、指定されているメンバーと重なり合うデータだけが返されるように、返されるデータを制限します。これは、クエリにおける見えない追加の軸と見なすことができます。スライサー軸は、MDX の SELECT ステートメントの WHERE 句で定義します。

スライサー軸の構文

スライサー軸を明示的に指定するには、MDX の <SELECT slicer axis clause> を使用します。その際の構文は以下のとおりです。

<SELECT slicer axis clause> ::=  WHERE Set_Expression

このスライサー軸の構文で使用する Set_Expression には、その句を評価するためのセットとして処理される組式、またはセット式を指定できます。セット式を指定した場合は、指定したセットが評価され、そのセット内のすべての組の結果セルが集計されます。つまり、指定したセットに対して Aggregate 関数が適用され、メジャーごとに定義されている集計関数によって各メジャーが集計されます。また、セット式を属性階層メンバーのクロス積として表せない場合は、スライサーのセット式の外部にあるセルを NULL と見なして評価されます。

重要な注意事項重要

SQL の WHERE 句とは異なり、MDX SELECT ステートメントの WHERE 句は、クエリの行軸で返された内容を直接フィルター処理しません。クエリの行軸または列軸での表示内容をフィルター処理する場合は、FILTER、NONEMPTY、TOPCOUNT などのさまざまな MDX 関数を使用できます。

暗黙的なスライサー軸

キューブ内の階層のメンバーがクエリ軸に明示的に含まれていない場合は、その階層の既定のメンバーが暗黙的にスライサー軸に含まれます。既定のメンバーの詳細については、「既定メンバの定義」を参照してください。

次のクエリには WHERE 句が含まれていないため、すべての Calendar Year の Internet Sales Amount メジャーの値が返されます。

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]

次のように WHERE 句を追加します。

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States])

この場合、クエリの行軸または列軸に対して返される内容は変更されず、セルごとに返される値が変更されます。この例では、United States に住む Customer についてのみ、すべての Calendar Year の Internet Sales Amount の値が返されるように、クエリがスライスされます。さまざまな階層の複数のメンバーを WHERE 句に追加できます。次のクエリでは、United States に住んでいて、Category がバイクの Product を購入した Customer のすべての Calendar Year の Internet Sales Amount の値が表示されます。

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States], [Product].[Category].&[1])

同じ階層の複数のメンバーを使用する場合は、セットを WHERE 句に含める必要があります。たとえば、次のクエリでは、Category がバイクの Product を購入した、United States または United Kingdom に住んでいる Customer のすべての Calendar Year の Internet Sales Amount の値が表示されます。

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE(
{[Customer].[Customer Geography].[Country].&[United States]
, [Customer].[Customer Geography].[Country].&[United Kingdom]}
, [Product].[Category].&[1])

前に述べたとおり、WHERE 句でセットを使用すると、セットのすべてのメンバーの値が暗黙的に集計されます。この例では、クエリによって、United States および United Kingdom の集計値が各セルに示されます。