最適化するパスを特定した後、ビジネス・ルールを編集します。パスごとに最適化ロジックおよび条件が指定されていることを確認します。
2つのYTD勘定科目を計算し、製品ディメンションおよびエンティティ・ディメンションを介して値を集計する、次のビジネス・ルールの定義について検討します。
SET UPDATECALC OFF; /* PASS 1 BEGINS*/ FIX ("BaseData","Plan","FY17", "FY17" "FY16") "BU Version_1"( IF(@ismbr("Jan")) "4110_YTD" = "4110"; "4120_YTD" = "4120"; "4130_YTD" = "4130"; "4140_YTD" = "4140"; "4150_YTD" = "4150"; Else "4110_YTD"="4110" + @prior("4110_YTD"); "4120_YTD"="4120" + @prior("4120_YTD"); "4130_YTD"="4130" + @prior("4130_YTD"); "4140_YTD"="4140" + @prior("4140_YTD"); "4150_YTD"="4150" + @prior("4150_YTD"); Endif) /* PASS 1 ENDS -- PASS 2 BEGINS*/ Agg("Entity","Product"); /* PASS 2 ENDS */ ENDFIX
このルールをCalculation Manager (ルール最適化の領域の特定を参照)で実行すると、「ログ・メッセージ」タブには、「パスのみ」が選択されている場合は、次のようなメッセージが表示されます。
ログ・ファイルの情報の分析では、実行時間の99.995% (79.235秒)がパス1に費やされ、パス2は0.005%のみであることが示されています。
「パスのみ」の選択を解除すると、次の図に示すような、ブロック、読取りおよび書込みの情報が表示されます。
前述のルールの定義には問題があります。
エンティティ・ディメンションおよび製品ディメンションにはFIXがないため、エンティティ・ディメンションおよび製品ディメンションのすべてのレベルですべてのルールが実行されます。
パス1は不必要に上位レベルを計算します。パス2のAgg関数がこれを実行し、パス1で実行された内容を上書きします。
スクリプトは、次のように最適化できます:
SET UPDATECALC OFF; FIX ("BaseData","Plan","FY17") /* PASS 1 BEGINS*/ Fix(@LEVMBRS("Entity",0), @LEVMBRS("Product",0)) "BU Version_1"( IF(@ismbr("Jan")) "4110_YTD" = "4110"; "4120_YTD" = "4120"; Else "4110_YTD"="4110" + @prior("4110_YTD"); "4120_YTD"="4120" + @prior("4120_YTD"); Endif) ENDFIX /* PASS 1 ENDS -- PASS 2 BEGINS*/ Agg("Entity","Product"); /* PASS 2 ENDS */ ENDFIX
更新されたルールをCalculation Manager (ルール最適化の領域の特定を参照)で実行すると、「ログ・メッセージ」タブに、次のようなメッセージが表示されます。
ログ・ファイルの情報の分析では、パス1に要する実行時間は、前回の実行と比較して15.901秒短縮されたことが示されています。
「パスのみ」の選択を解除すると、次の図に示すような、パス1に関するブロック、読取りおよび書込みの情報が表示されます。
ブロック、読取りおよび書込みの情報と、前の最適化での同様のデータとの比較は、ビジネス・ルールの処理統計の全般的な削減を示します。