クエリ スコープの計算されるメンバの作成 (MDX)
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> ::=
( [ CALCULATED ] MEMBER <CREATE MEMBER body clause>) | <CREATE MEMBER body clause> ::= Member_Identifier AS 'MDX_Expression'
[ <CREATE MEMBER property clause> [ , <CREATE MEMBER property clause> ... ] ]
<CREATE MEMBER property clause> ::=
( MemberProperty_Identifier = Scalar_Expression )
WITH キーワードの構文で使用する Member_Identifier の値は、計算されるメンバの完全修飾名です。完全修飾名には、計算されるメンバを関連付けるディメンションまたはレベルが含まれます。MDX_Expression の値は、その式の値が評価された後の計算されるメンバの値を返します。必要に応じて、MemberProperty_Identifier の値にセル プロパティの名前を、Scalar_Expression の値にセル プロパティの値を指定して、計算されるメンバの固有セル プロパティの値を指定できます。
WITH キーワードの例
次の MDX クエリは、計算されるメンバ [Measures].[Special Discount] を定義し、元の割引額に基づいて特殊な割引額を計算します。
WITH
MEMBER [Measures].[Special Discount] AS
[Measures].[Discount Amount] * 1.5
SELECT
[Measures].[Special Discount] on COLUMNS,
NON EMPTY [Product].[Product].MEMBERS ON Rows
FROM [Adventure Works]
WHERE [Product].[Category].[Bikes]
計算されるメンバは、階層内のどこにでも作成できます。たとえば、次の例に示す MDX クエリは、仮想的な Sales キューブの計算されるメンバ [BigSeller] を定義しています。この計算されるメンバは、指定したストアのビールとワインの売上数量が 100.00 以上かどうかを判別します。ただし、このクエリは、[BigSeller] という計算されるメンバを [Product] ディメンションの子メンバではなく [Beer and Wine] メンバの子メンバとして作成します。
WITH
MEMBER [Product].[Beer and Wine].[BigSeller] AS
IIf([Product].[Beer and Wine] > 100, "Yes","No")
SELECT
{[Product].[BigSeller]} ON COLUMNS,
Store.[Store Name].Members ON ROWS
FROM Sales
計算されるメンバの基になるメンバは、キューブ内の既存のメンバである必要はありません。同じ MDX 式で定義する他の計算されるメンバに基づく計算されるメンバを作成することも可能です。たとえば、次の MDX クエリは、最初の計算されるメンバ [Measures].[Special Discount] で作成する値に基づいて、2 番目の計算されるメンバ [Measures].[Special Discounted Amount] の値を生成します。
WITH
MEMBER [Measures].[Special Discount] AS
[Measures].[Discount Percentage] * 1.5,
FORMAT_STRING = 'Percent'
MEMBER [Measures].[Special Discounted Amount] AS
[Measures].[Reseller Average Unit Price] * [Measures].[Special Discount],
FORMAT_STRING = 'Currency'
SELECT
{[Measures].[Special Discount], [Measures].[Special Discounted Amount]} on COLUMNS,
NON EMPTY [Product].[Product].MEMBERS ON Rows
FROM [Adventure Works]
WHERE [Product].[Category].[Bikes]