条件付きテストの例
データ依存性を評価するために計算が必要な場合、Essbase式で条件付きテストを使用します。
たとえば、売上が500000を超える場合は、キューブ・アウトラインのCommissionメンバーに次の式を適用して売上の1%でコミッションを計算できます:
IF(Sales > 500000)
Commission = Sales * .01;
ENDIF;
この式を計算スクリプト内に配置する場合は、式とCommissionメンバーを次のように関連付ける必要があります。
Commission (IF(Sales > 500000)
Commission = Sales * .01;
ENDIF;)
Essbaseはキューブを一巡して次の計算を実行します:
-
IF文では、現在のメンバーの組合せに対するSalesの値が500000を超えているかが確認されます。
-
Salesが500000を超えている場合は、Essbaseによって、Salesの値に0.01が乗算され、結果がCommissionに置かれます。
次の例の式では、現在のメンバーの祖先をテストした後、適切なPayrollの計算式が適用されます。
IF(@ISIDESC(East) OR @ISIDESC(West))
Payroll = Sales * .15;
ELSEIF(@ISIDESC(Central))
Payroll = Sales * .11;
ELSE
Payroll = Sales * .10;
ENDIF;
この式を計算スクリプト内に配置する場合は、式とPayrollメンバーを次のように関連付ける必要があります。
Payroll(IF(@ISIDESC(East) OR @ISIDESC(West))
Payroll = Sales * .15;
ELSEIF(@ISIDESC(Central))
Payroll = Sales * .11;
ELSE
Payroll = Sales * .10;
ENDIF;)
Essbaseはデータベースを一巡して次の計算を実行します。
-
IF文では、@ISIDESC関数を使用して、Marketディメンションの現在のメンバーがEastとWestのいずれかの子孫であるかを確認します。
-
Marketディメンションの現在のメンバーがEastまたはWestの子孫である場合は、EssbaseによってSalesの値に0.15が乗算されてから、次のメンバーの組合せが処理されます。
-
現在のメンバーがEastまたはWestの子孫でない場合は、ELSEIF文で@ISIDESC関数を使用して、現在のメンバーがCentralの子孫であるかどうかを確認します。
-
Marketディメンションの現在のメンバーがCentralの子孫である場合は、EssbaseによってSalesの値に0.11が乗算されてから、次のメンバーの組合せが処理されます。
-
現在のメンバーがEast、WestおよびCentralの子孫でない場合は、EssbaseによってSalesの値に0.10が乗算されてから、次のメンバーの組合せが処理されます。
「マルチディメンショナル計算の概念」も参照してください。