潜在的ブロックの計算の有効化
密ディメンションの密メンバーで式を使用する場合、結果の値が密ディメンションのものであり、オペランドが疎ディメンションのものであると、Essbaseは必要なブロックを自動的に作成しません。
次の例では、既存の実績データから予算の販売および費用データを作成するとします。 SalesおよびExpensesは密Measuresディメンションのメンバーです。BudgetおよびActualは疎Scenarioディメンションのメンバーです。
FIX(Budget)
(Sales = Sales -> Actual * 1.1;
Expenses = Expenses -> Actual * .95;)
ENDFIX
式の結果であるSalesおよびExpensesは密ディメンション・メンバーで、オペランドActualは疎ディメンション内にあります。 Essbaseは密メンバー式を既存のデータ・ブロックに対してのみ実行するため、計算スクリプトは必要なデータ・ブロックを作成せず、予算データ値はまだ存在しないブロックに対しては計算されません。
この問題は、次の方法を使用して解決できます:
DATACOPYを使用した既存のブロックのコピー
DATACOPYコマンドを使用して、既存のブロックごとにブロックを作成し、新しいブロックに対して計算を実行します。 例:
DATACOPY Sales -> Actual TO Sales -> Budget;
DATACOPY Expenses -> Actual TO Expenses -> Budget;
FIX(Budget)
(Sales = Sales -> Actual * 1.1;
Expenses = Expenses -> Actual * .95;)
ENDFIX
Essbaseでは、存在する対応する各実績ブロックの予算値を含むブロックが作成されます。 DATACOPYコマンドが終了すると、スクリプトの残りの部分で値が変更されます。
DATACOPYの使用は、次の場合に適しています:
-
既存のブロックの値とDATACOPYによって作成された対応する値の間には、数学的な関係があります。
たとえば、前述の例では、既存の実績値に基づいて予算値を計算できます。
注意:
DATACOPYは、ソース・ブロックのすべてのセルに同一の値を持つ新しいブロックを作成します。 式がブロックの一部に対してのみ実行される場合、これらのコピーされたセルは計算の最後に残るため、不要な値になる可能性があります。
-
コピーされるブロックには、#MISSING値のみが含まれません。
#MISSING値が存在する場合、#MISSING値のみを含むブロックが書き込まれます。 不要な#MISSINGブロックには、Essbaseリソースおよび処理時間が必要です。
SET CREATENONMISSINGBLKを使用したすべての潜在的ブロックの計算
不要な値に関心がある場合は、DATACOPYを使用するかわりにSET CREATENONMISSINGBLK ON計算コマンドを使用して、メモリー内のすべての潜在的ブロックを計算し、データ値を含む計算済ブロックのみを格納できます。 SET CREATENONMISSINGBLK計算コマンドは、密または疎ディメンションの値を計算する場合に役立ちます。
次の例では、既存の実績データから予算の販売および費用データを作成します。 SalesおよびExpensesは密Measuresディメンションのメンバーです。BudgetおよびActualは疎Scenarioディメンションのメンバーです。
FIX(Budget)
SET CREATENONMISSINGBLK ON
(Sales = Sales -> Actual * 1.1;
Expenses = Expenses -> Actual * .95;)
ENDFIX
ノート:
疎ディメンションにSET CREATEBLOCKONEQ ONが設定されている場合、SET CREATENONMISSINGBLK ONは、SET CREATENONMISSINGBLK OFFコマンドが検出されるか、計算スクリプトが完了するまで、一時的にSET CREATEBLOCKONEQ ONをオーバーライドします。 「疎ディメンションのメンバーに割り当てられた非定数値」を参照してください。
SET CREATENONMISSINGBLKコマンドを使用する利点は、密メンバーに適用すると、メンバー式の影響を受けるデータ・セルのみが保存されることです。 デメリットは、メモリー内にマテリアライズされる潜在的ブロックが多すぎることで、計算のパフォーマンスに影響する可能性があることです。 このコマンドを使用する場合は、FIXを使用して計算されるブロックの範囲を制限するなど、潜在的なブロックの数を制限します。