次の方法で共有


CREATE MEMBER ステートメント (MDX)

更新 : 2006 年 12 月 12 日

計算されるメンバを作成します。

構文

CREATE [ SESSION ] [HIDDDEN] [ CALCULATED ] MEMBER CURRENTCUBE | Cube_Name.Member_Name 
      AS MDX_Expression
      [,Property_Name = Property_Value, ...n]
......[,SCOPE_ISOLATION = CUBE]

引数

  • 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 のドキュメントを参照してください。

標準のプロパティ

計算されるメンバには、それぞれ既定のプロパティのセットがあります。クライアント アプリケーションを Microsoft SQL Server 2005 Analysis Services (SSAS) に接続すると、管理者の選択に従って、既定のプロパティをサポートするか、またはサポート可能な状態になります。

キューブの定義に応じて、追加のメンバ プロパティを使用できる場合があります。以下のプロパティは、キューブ内のディメンション レベルに関係する情報を表します。

プロパティの識別子 意味

SOLVE_ORDER

計算されるメンバがもう 1 つの他の計算されるメンバを参照する場合 (つまり、計算されるメンバが互いに交差する場合) に、計算されるメンバが解決される順序を指定します。

FORMAT_STRING

クライアント アプリケーションでセル値を表示する場合に使用する、Microsoft Office のスタイル書式文字列を指定します。

VISIBLE

計算されるメンバがスキーマ行セットに表示されるかどうかを決定します。表示される計算されるメンバは、AddCalculatedMembers 関数を使用してセットに追加できます。0 以外の値は、計算されるメンバが表示されることを示します。このプロパティの既定値は、Visible です。

表示されない (この値が 0 に設定されている) 計算されるメンバは、一般には中間段階として、より複雑な計算されるメンバ内で使用されます。これらの計算されるメンバは、メジャーなど、他の種類のメンバによって参照することもできます。

NON_EMPTY_BEHAVIOR

空のセルを解決する場合の計算されるメンバの動作を決定するために使用するメジャーまたはセットを指定します。

スコープ

計算されるメンバには、以下のいずれかのスコープを設定できます。

  • クエリ スコープ
    計算されるメンバの表示設定と有効期間は、クエリに限定されます。そのような計算されるメンバは、個々のクエリの中で定義します。クエリ スコープは、セッション スコープよりも優先されます。詳細については、「クエリ スコープの計算されるメンバの作成 (MDX)」を参照してください。
  • セッション スコープ
    計算されるメンバの表示設定と有効期間は、メンバが作成されたセッションに限定されます。(計算されるメンバに対して DROP MEMBER ステートメントが実行された場合、有効期間はセッションよりも短くなります。)CREATE MEMBER ステートメントで作成する計算されるメンバは、セッション スコープです。

スコープの分離

SQL Server 2005 Analysis Services で、キューブ多次元式 (MDX) スクリプトに計算されるメンバが含まれる場合、既定では計算されるメンバが解決されてから、セッション スコープの計算とクエリ定義の計算が解決されます。これは、SQL Server 2000 Analysis Services の動作とは異なります。SQL Server 2000 Analysis Services では、2 つのキューブレベルの計算の間に、明示的な解決順序を使用して、セッション スコープの計算またはクエリ定義の計算を挿入できました。この動作が変更されたことにより、SQL Server 2005 Analysis Services では、クエリまたはセッション スコープの計算されるメンバで目的の結果が返されない可能性があります。

ms144787.note(ja-jp,SQL.90).gifメモ :
シナリオによっては、Aggregate (MDX) 関数と VisualTotals (MDX) 関数の動作がこれと異なる場合があります。

SQL Server 2005 Analysis Services のこの動作によって、汎用的なクライアント アプリケーションでは計算の実装方法を気にせずに複雑な計算を含むキューブを処理できます。ただしシナリオによっては、キューブ内の特定の計算よりも前にセッション スコープまたはクエリ スコープの計算されるメンバを実行したいが、Aggregate 関数も VisualTotals 関数も適用できないという場合も考えられます。SQL Server 2000 Analysis Services では、キューブとセッション スコープまたはクエリ スコープの計算されるメンバの両方に対し、SOLVE_ORDER プロパティを慎重に設定することでこの動作を実現できました。SQL Server 2005 Analysis Services で同じ動作を実現するには、SCOPE_ISOLATION 計算プロパティを使用します。

ms144787.note(ja-jp,SQL.90).gifメモ :
SCOPE_ISOLATION 計算プロパティは、SQL Server 2005 Analysis Services Service Pack 2 (SP2) の新しいプロパティです。

次のスクリプトは、正しい結果を得るために 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 の、出店コストに対する売上の比率を求めようとしています。SQL Server 2000 Analysis Services ではこのクエリで目的の結果が返されますが、SQL Server 2005 Analysis Services では返されません。SQL Server 2005 Analysis Services では、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

参照

その他の技術情報

MDX データ定義ステートメント (MDX)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

変更内容 :
  • SQL Server 2005 Analysis Services の機能と操作を反映する内容に更新しました。

2006 年 12 月 12 日

変更内容 :
  • Service Pack 2 で追加された、スコープ分離用の新しいプロパテイの情報を反映しました。