次の方法で共有


MDX でのサブキューブの作成 (MDX)

サブキューブは、基になるデータにフィルタを適用したビューを表す、キューブのサブセットです。キューブをサブキューブに限定することによって、クエリのパフォーマンスを向上させることができます。

サブキューブを定義するには、このトピックで説明されている CREATE SUBCUBE ステートメントを使用します。

CREATE SUBCUBE の構文

サブキューブを作成するための構文は、以下のとおりです。

CREATE SUBCUBE Subcube_Identifier AS Subcube_Expression

CREATE SUBCUBE の構文は非常に単純です。Subcube_Identifier パラメータは、サブキューブの基になるキューブを識別します。Subcube_Expression パラメータでは、サブキューブにするキューブの部分を選択します。

サブキューブを作成すると、そのサブキューブは、セッションが閉じるまで、あるいは DROP SUBCUBE ステートメントを実行するまですべての MDX クエリのコンテキストになります。

サブキューブの内容

CREATE SUBCUBE ステートメントの使用法は単純ですが、サブキューブに含まれるすべてのメンバがステートメント自体で明示的に指定されるわけではありません。サブキューブを定義する場合には、以下の規則が適用されます。

  • ある階層の (All) メンバを含める場合、その階層のすべてのメンバが含まれます。

  • 任意のメンバを含める場合、そのメンバの先祖と子孫も含まれます。

  • あるレベルの各メンバを含める場合、階層のすべてのメンバが含まれます。他の階層のメンバは、そのレベルのメンバと共に存在していない場合 (たとえば、顧客を含まない都市のような不均衡階層など)、除外されます。

  • サブキューブには、キューブの各 (All) メンバが常に含まれます。

さらに、サブキューブ内の集計値は視覚的に合計されます。たとえば、USA、WA、OR を含むサブキューブがあるとします。サブキューブによって定義されている州は WA と OR だけなので、USA の集計値は {WA,OR} の合計になります。他の州は無視されます。

また、サブキューブの外部にあるセルへの明示的な参照を行うと、キューブ全体のコンテキストで評価されるセル値が返されます。たとえば、今年度に限定したサブキューブを作成するとします。この場合、ParallelPeriod 関数を使用して今年度を前年度と比較することができます。前年度の値はサブキューブの外部にありますが、それでも値の差が返されます。

さらに、元のコンテキストを上書きしない場合、サブセレクト内で評価されるセット関数は、サブセレクトのコンテキストで評価されます。コンテキストを上書きする場合、セット関数はキューブ全体のコンテキストで評価されます。

CREATE SUBCUBE の例

以下の例では、Budget キューブを 4200 と 4300 のアカウントに限定するサブキューブを作成しています。

CREATE SUBCUBE Budget AS SELECT {[Account].[Account].&[4200], [Account].[Account].&[4300] } ON 0 FROM Budget

セッションに対するサブキューブが作成されるので、以降のクエリは、キューブ全体ではなくサブキューブに対して実行されます。たとえば、次のクエリを実行します。このクエリでは、アカウント 4200 と 4300 のメンバだけが返されます。

SELECT [Account].[Account].Members ON 0, Measures.Members ON 1 FROM Budget