条件付きテストの例

データ依存性を評価するために計算が必要な場合、Essbase式で条件付きテストを使用します。

たとえば、売上が500000を超える場合は、キューブ・アウトラインのCommissionメンバーに次の式を適用して売上の1%でコミッションを計算できます:

IF(Sales > 500000)
   Commission = Sales * .01;
ENDIF;

この式を計算スクリプト内に配置する場合は、式とCommissionメンバーを次のように関連付ける必要があります。

Commission (IF(Sales > 500000)
   Commission = Sales * .01;
ENDIF;)

Essbaseはキューブを一巡して次の計算を実行します:

  1. IF文では、現在のメンバーの組合せに対するSalesの値が500000を超えているかが確認されます。

  2. 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はデータベースを一巡して次の計算を実行します。

  1. IF文では、@ISIDESC関数を使用して、Marketディメンションの現在のメンバーがEastとWestのいずれかの子孫であるかを確認します。

  2. Marketディメンションの現在のメンバーがEastまたはWestの子孫である場合は、EssbaseによってSalesの値に0.15が乗算されてから、次のメンバーの組合せが処理されます。

  3. 現在のメンバーがEastまたはWestの子孫でない場合は、ELSEIF文で@ISIDESC関数を使用して、現在のメンバーがCentralの子孫であるかどうかを確認します。

  4. Marketディメンションの現在のメンバーがCentralの子孫である場合は、EssbaseによってSalesの値に0.11が乗算されてから、次のメンバーの組合せが処理されます。

  5. 現在のメンバーがEast、WestおよびCentralの子孫でない場合は、EssbaseによってSalesの値に0.10が乗算されてから、次のメンバーの組合せが処理されます。

「マルチディメンショナル計算の概念」も参照してください。