SET CREATEBLOCKONEQ

EssbaseSET CREATEBLOCKONEQ計算コマンドは、計算スクリプト内で、計算式で疎ディメンションのメンバーに定数以外を割り当てるときに新しいブロックを作成するかどうかを制御します。このコマンドは、キューブに定義されている「等式によるブロックの作成」設定よりも優先されます。

構文

SET CREATEBLOCKONEQ ON|OFF;

パラメータ

ON

式が、ブロックが存在しないスパース・ディメンション・メンバーに定数以外の値を割り当てた場合、Essbaseはブロックを作成します。

OFF

式が、ブロックが存在しないスパース・ディメンション・メンバーに定数以外の値を割り当てた場合、Essbaseはブロックを作成しません。

ノート

計算の結果、ブロックが存在しないスパース・ディメンション・メンバーの値が得られた場合、Essbaseはブロックを作成します。他の値を含まない場合など、新しいブロックが不要な場合もあります。大規模なキューブで、不要なブロックの作成および処理を行うと、処理時間とストレージ要件が増加します。

「等式によるブロックの作成」設定は、スパース・ディメンションのメンバーに定数以外の値を割り当てた結果としてブロックが作成される状況向けに設計されています。たとえば、「等式によるブロックの作成」がONであり、Westに以前は値がなかった値が割り当てられている場合、新しいブロックが作成されます。この設定がOFFの場合、ブロックは作成されません。

「等式によるブロックの作成」設定はキューブのプロパティです。初期値はOFFです。定数以外の値がスパース・ディメンション・メンバーに割り当てられている場合、ブロックは作成されません。

特定の制御用に、スクリプト内でSET CREATEBLOCKONEQ計算コマンドを使用して、コマンドがスクリプトで実行されたときにブロックの作成を制御できます。SET CREATEBLOCKONEQの使用には、次の特徴があります。

  • Essbaseが計算スクリプト内でSET CREATEBLOCKONEQを検出すると、キューブレベルの設定は無視されます。

  • 計算スクリプトで複数のSET CREATEBLOCKONEQコマンドを使用して、各コマンドに続く計算に「等式によるブロックの作成」設定値を定義できます。

  • SET CREATEBLOCKONEQコマンドによって設定された値は、次のSET CREATEBLOCKONEQコマンドが処理されるか、計算スクリプトが終了するまで有効です。

  • 「等式によるブロックの作成」設定は、SET CREATENONMISSINGBLKをONにすることで上書きされます。

  • SET CREATEBLOCKONEQコマンドは、キューブレベルの「等式によるブロックの作成」プロパティを変更しません。

  • SET CREATEBLOCKONEQコマンドが検出されない場合、Essbaseはキューブレベルの設定を使用して、ブロックを作成するかどうかを決定します。

「等式によるブロックの作成」設定がONの場合、Essbaseはトップダウン計算方法を使用して、各スパース・メンバーを計算します。

Essbaseがスパース・ディメンションのメンバーに定数を割り当てる場合、「等式によるブロックの作成」設定は参照されません。次の表は、定数または定数以外が割り当てられたスパース・メンバー計算の例を示しています。

表2-4 スパース・メンバー計算での定数および定数以外の割当ての例

割当て値 スパース・メンバー式の例 新しいブロックが作成されるかどうか
定数 West = 350 はい
定数以外 West = California + 120 「等式によるブロックの作成」設定がONの場合は、はい。それ以外の場合は、いいえ。
定数以外 West = California * 1.05 「等式によるブロックの作成」設定がONの場合は、はい。それ以外の場合は、いいえ。

定数以外およびスパース・ディメンションを操作するときにブロックの作成を制御するためのヒントについては、スパース・ディメンションのメンバーに割り当てられた定数以外の値を参照してください。

例1

次の例は、Sample.Basicに基づきます。データは、("100-10", "New York")の1つのブロックに対してのみロードされます。計算により、ブロック("300-10", "New York")が作成されます。エクスポート時に、キューブはロードされたブロックと新しいブロックの2つのブロックをエクスポートします。計算はボトムアップで実行されます。

SET MSG SUMMARY;
SET CREATEBLOCKONEQ OFF;

"300-10" = "100-10" + 100000;

例2

次の例は、Sample.Basicに基づきます。データは、("100-10", "New York")の1つのブロックに対してのみロードされます。計算により、300-10がMarketディメンションの25個の保存されたメンバーと交差した25個の新しいブロックが作成されます。エクスポート時に、キューブは26個のブロック(ロードされたブロックと25個の新しいブロック)をエクスポートします。計算はトップダウンで実行されます。

SET MSG SUMMARY;
SET CREATEBLOCKONEQ ON;

"300-10" = "100-10" + 100000;

例1と例2の比較

例1では、計算スクリプトの作成者は、次の行を使用してブロックの作成をOFFにすることを望んでいた可能性があります。

SET CREATEBLOCKONEQ OFF;

しかし、計算スクリプトは、割当て文を実行できるように、少なくとも1つの依存ブロックを作成する必要があります。

SET CREATEBLOCKONEQ OFFは、計算に依存ブロックが必要な場合にブロック作成をミュートしません。ただし、無関係なブロックの作成はミュートされます。

例1の場合、Essbaseは、ProductディメンションとMarketディメンションを交差させるブロックの作成を回避します。例2では、これらの追加のブロックが作成されます。