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 |
このメンバーが関連付けられているメジャー グループの名前です。 |