Essbaseは、同じディメンションのメンバーの範囲の式を同時に計算することで、計算パフォーマンスを最適化します。 ただし、一部の式では同じディメンションのメンバーからの値が必要であり、Essbaseではまだ必要な値が計算されていない可能性があります。
適切な例は、オープン・インベントリが前月の期末インベントリに依存するキャッシュ・フローです。
期首インベントリおよび期末インベントリの値は、月単位で計算する必要があります。 次のような結果を得るとします:
Januaryの期首インベントリの値がデータベースにロードされている場合、上のグリッドで結果を取得するには次の計算が必要です:
1. January Ending = January Opening – Sales + Additions
2. February Opening = January Ending
3. February Ending = February Opening – Sales + Additions
4. March Opening = February Ending
5. March Ending = March Opening – Sales + Additions
データベース・アウトラインの1つのメンバーに相互依存の複数の方程式を適用することで、必要な結果を計算できます。
次の式は、データベース・アウトラインの期首インベントリ・メンバーに適用され、正しい値を計算します:
IF(NOT @ISMBR (Jan))
"Opening Inventory" = @PRIOR("Ending Inventory");
ENDIF;
"Ending Inventory" = "Opening Inventory" - Sales + Additions;
計算スクリプトに式を配置する場合は、次のように式を期首インベントリ・メンバーに関連付ける必要があります:
"Opening Inventory"
(IF(NOT @ISMBR (Jan))
"Opening Inventory" = @PRIOR("Ending Inventory");
ENDIF;)
"Ending Inventory" = "Opening Inventory" - Sales + Additions;
Essbaseは、次の計算を実行して月を循環します:
-
IF文および@ISMBR関数は、Yearディメンションの現在のメンバーがJanでないことを確認します。Janの期首インベントリ値は入力値であるため、このステップが必要です。
-
現在の月がJanでない場合、@PRIOR関数は前月の期末インベントリの値を取得します。 この値は、今月の期首インベントリに割り当てられます。
-
現在の月の期末インベントリが計算されます。
ノート:
正しい結果を計算するには、前述の式をあるメンバーである期首インベントリに配置する必要があります。 在庫のオープンと期末在庫のフォーミュラを別々のメンバーに配置すると、Essbaseではすべての月の期首在庫が計算され、すべての月の期末在庫が計算されます。 この組織は、期首インベントリの計算時に前月の期末インベントリの値を使用できないことを意味します。