CREATE MEMBER ステートメント (MDX)
計算されるメンバを作成します。
構文
CREATE [ SESSION ] [HIDDDEN] [ CALCULATED ] MEMBER CURRENTCUBE | Cube_Name.Member_Name
AS MDX_Expression
[,Property_Name = Property_Value, ...n]
......[,SCOPE_ISOLATION = CUBE]
引数
Cube_Name
メンバを作成するキューブの名前を指定する有効な文字列式です。Member_Name
メンバ名を指定する有効な文字列式です。メジャー ディメンション以外のディメンション内にメンバを作成するには、完全修飾名を指定します。完全修飾メンバ名を指定しなかった場合、メンバはメジャー ディメンション内に作成されます。MDX_Expression
有効な多次元式 (MDX) 式です。Property_Name
計算されるメンバのプロパティの名前を指定する有効な文字列です。Property_Value
計算されるメンバ プロパティの値を定義する有効なスカラ式です。
説明
CREATE MEMBER ステートメントは、セッション全体で使用できる計算されるメンバを定義します。作成した計算されるメンバは、セッション内の複数のクエリで使用できます。詳細については、「セッション スコープの計算されるメンバの作成 (MDX)」を参照してください。
1 つのクエリだけで使用する計算されるメンバを定義することも可能です。1 つのクエリに限定される計算されるメンバを定義するには、SELECT ステートメントで WITH 句を使用します。詳細については、「クエリ スコープの計算されるメンバの作成 (MDX)」を参照してください。
Property_Name では、標準またはオプションの計算されるメンバ プロパティを参照できます。標準のメンバ プロパティの一覧は、このトピックの後半にあります。SESSION 値を指定しない CREATE MEMBER で作成された計算されるメンバは、セッション スコープになります。また、計算されるメンバの定義に含まれる文字列は、二重引用符で区切ります。この点は、OLE DB によって定義される方法と異なっています。OLE DB では、文字列を単一引用符で区切るように指定されています。
現在接続しているキューブ以外のキューブを指定すると、エラーになります。したがって、キューブ名の代わりに CURRENTCUBE を使用して、現在のキューブを確実に指定してください。
OLE DB によって定義されるメンバ プロパティの詳細については、OLE DB のドキュメントを参照してください。
スコープ
計算されるメンバには、以下のいずれかのスコープを設定できます。
クエリ スコープ
計算されるメンバの表示設定と有効期間は、クエリに限定されます。そのような計算されるメンバは、個々のクエリの中で定義します。クエリ スコープは、セッション スコープよりも優先されます。詳細については、「クエリ スコープの計算されるメンバの作成 (MDX)」を参照してください。セッション スコープ
計算されるメンバの表示設定と有効期間は、メンバが作成されたセッションに限定されます。計算されるメンバに対して DROP MEMBER ステートメントが実行された場合、有効期間はセッションよりも短くなります。CREATE MEMBER ステートメントで作成する計算されるメンバは、セッション スコープです。
スコープの分離
キューブの多次元式 (MDX) スクリプトに計算されるメンバが含まれる場合、既定では計算されるメンバが解決されてから、セッション スコープの計算とクエリ定義の計算が解決されます。
注 |
---|
シナリオによっては、Aggregate (MDX) 関数と VisualTotals (MDX) 関数の動作がこれと異なる場合があります。 |
この動作によって、汎用的なクライアント アプリケーションでは計算の実装方法を気にせずに複雑な計算を含むキューブを処理できます。ただしシナリオによっては、キューブ内の特定の計算よりも前にセッション スコープまたはクエリ スコープの計算されるメンバを実行したいが、Aggregate 関数も VisualTotals 関数も適用できないという場合も考えられます。これを実現するには、SCOPE_ISOLATION 計算プロパティを使用します。
例
次のスクリプトは、正しい結果を得るために SCOPE_ISOLATION 計算プロパティが必要とされるシナリオの例です。
キューブの MDX スクリプト :
CREATE MEMBER CURRENTCUBE.Measures.ProfitRatio AS 'Measures.[Store Sales]/Measures.[Store Cost]', SOLVE_ORDER = 10
MDX クエリ :
WITH MEMBER [Customer].[Customers].[USA]. USAWithoutWA AS
[Customer].[Customers].[Country].&[USA] - [Customer].[Customers].[State Province.&[WA], SOLVE_ORDER=5
SELECT {USAWithoutWA} ON 0 FROM SALES
WHERE ProfitRatio
上のクエリでは、WA を除く USA の、出店コストに対する売上の比率を求めようとしています。上のクエリでは目的の結果が返されず、USA の比率から WA の比率を引くという無意味な結果が返されます。ここで目的の結果を得るには、SCOPE_ISOLATION 計算プロパティを使用できます。
SCOPE_ISOLATION 計算プロパティを使用した MDX クエリ :
WITH MEMBER [Customer].[Customers].[USA]. USAWithoutWA AS
[Customer].[Customers].[Country].&[USA] - [Customer].[Customers].[State Province.&[WA], SOLVE_ORDER=5
,SCOPE_ISOLATION=CUBE
SELECT {USAWithoutWA} ON 0 FROM SALES
WHERE ProfitRatio
標準のプロパティ
計算されるメンバには、それぞれ既定のプロパティのセットがあります。クライアント アプリケーションを Microsoft Analysis Services に接続すると、管理者の選択に従って、既定のプロパティをサポートするか、またはサポート可能な状態になります。
キューブの定義に応じて、追加のメンバ プロパティを使用できる場合があります。以下のプロパティは、キューブ内のディメンション レベルに関係する情報を表します。
プロパティの識別子 |
意味 |
---|---|
SOLVE_ORDER |
計算されるメンバがもう 1 つの他の計算されるメンバを参照する場合 (つまり、計算されるメンバが互いに交差する場合) に、計算されるメンバが解決される順序です。 |
FORMAT_STRING |
クライアント アプリケーションでセル値を表示する場合に使用する、Microsoft Office のスタイル書式文字列です。 |
VISIBLE |
計算されるメンバがスキーマ行セットに表示されるかどうかを示す値です。表示される計算されるメンバは、AddCalculatedMembers 関数を使用してセットに追加できます。0 以外の値は、計算されるメンバが表示されることを示します。このプロパティの既定値は、Visible です。 表示されない (この値が 0 に設定されている) 計算されるメンバは、一般には中間段階として、より複雑な計算されるメンバ内で使用されます。これらの計算されるメンバは、メジャーなど、他の種類のメンバによって参照することもできます。 |
NON_EMPTY_BEHAVIOR |
空のセルを解決する場合の計算されるメンバの動作を決定するために使用するメジャーまたはセットです。 |
CAPTION |
メンバのキャプションとしてクライアント アプリケーションが使用する文字列です。 |
DISPLAY_FOLDER |
メンバを表示するためにクライアント アプリケーションが使用する、表示フォルダのパスを識別する文字列です。フォルダ レベルの区切り記号は、クライアント アプリケーションによって定義されます。Analysis Services が提供するツールおよびクライアントでは、円記号 (\) がレベルの区切り記号です。定義されたメンバで複数の表示フォルダを指定するには、セミコロン (;) を使用してフォルダを区切ります。 |
ASSOCIATED_MEASURE_GROUP |
このメンバが関連付けられているメジャー グループの名前です。 |