名前付きセットが 1 つの多次元式 (MDX) クエリにのみ必要な場合は、WITH キーワードを使用してその名前付きセットを定義できます。 WITH キーワードを使用して作成された名前付きセットは、クエリの実行が完了した後に存在しなくなりました。
このトピックで説明したように、WITH キーワードの構文は非常に柔軟であり、関数を使用して名前付きセットを定義する場合にも対応できます。
注
名前付きセットの詳細については、「 MDX での名前付きセットの構築 (MDX)」を参照してください。
WITH キーワード構文
MDX SELECT ステートメントに WITH キーワードを追加するには、次の構文を使用します。
[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ]
SELECT [ * | ( <SELECT query axis clause> [ , <SELECT query axis clause> ... ] ) ]
FROM <SELECT subcube clause>
[ <SELECT slicer axis clause> ]
[ <SELECT cell property list clause> ]
<SELECT WITH clause> ::=
( SET Set_Identifier AS 'Set_Expression')
WITH キーワードの構文では、 Set_Identifier パラメーターに名前付きセットのエイリアスが含まれています。
Set_Expression パラメーターには、名前付きセット エイリアスが参照する set 式が含まれています。
「WITH」キーワードの例
次の MDX クエリでは、Microsoft SQL Server 2000 Analysis Services のサンプル データベースである FoodMart 2000 のさまざまな Chardonnay ワインと Chablis ワインの販売単位を調べます。 このクエリは、結果セットに関しては非常に単純ですが、このようなクエリをメンテナンスする必要がある場合、長くて扱いにくいです。
SELECT
{[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay], [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay], [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay], [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay], [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay], [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine], [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine], [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine], [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine], [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]} ON COLUMNS,
{Measures.[Unit Sales]} ON ROWS
FROM Sales
前の MDX クエリを保守しやすくするために、WITH キーワードを使用して、クエリの名前付きセットを作成できます。 次のコードは、WITH キーワードを使用して名前付きセット、 [ChardonnayChablis]を作成する方法、および名前付きセットを使用して SELECT ステートメントを短く保守しやすくする方法を示しています。
WITH SET [ChardonnayChablis] AS
{[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],
[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],
[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],
[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],
[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],
[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],
[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],
[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],
[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],
[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]}
SELECT
[ChardonnayChablis] ON COLUMNS,
{Measures.[Unit Sales]} ON ROWS
FROM Sales
WITH キーワードと共に関数を使用する
名前付きセットの各メンバーを明示的に定義できますが、この方法では長いステートメントを生成できます。 名前付きセットの作成と保守を容易にするために、MDX 関数を使用してメンバーを定義できます。
たとえば、次の MDX クエリの例では、 Filter、 CurrentMember、 Name MDX 関数と InStr VBA 関数を使用して、 [ChardonnayChablis] 名前付きセットを作成します。 このバージョンの [ChardonnayChablis] 名前付きセットは、このトピックで既に示した明示的に定義されたバージョンと同じです。
WITH SET [ChardonnayChablis] AS
'Filter([Product].Members, (InStr(1, [Product].CurrentMember.Name, "chardonnay") <> 0) OR (InStr(1, [Product].CurrentMember.Name, "chablis") <> 0))'
SELECT
[ChardonnayChablis] ON COLUMNS,
{Measures.[Unit Sales]} ON ROWS
FROM Sales