条件付きテスト
単一の条件付きテストまたは一連の条件付きテストを使用するEssbase式を定義することで、計算のフローを制御できます。フロー・コマンドとともに、テストの結果に基づいて、TRUEまたはFALSE (それぞれ1、0)を戻すブール関数を使用できます。
IFおよびENDIFコマンドにより、条件ブロックが定義されます。IFとENDIFの間にある式は、テストでTRUE (1)が戻された場合のみ実行されます。テストでFALSE (0)が戻された場合、ELSEおよびELSEIFコマンドを使用して、代替アクションを指定できます。各ELSEコマンドに続く式は、前のテストでFALSE (0)が戻された場合のみ実行されます。各ELSEIFコマンドに続く条件は、前のIFコマンドでFALSE (0)が戻された場合にのみテストされます。
計算スクリプトで条件式を使用するときは、この項の例で示すように、それを丸カッコで囲み、データベース・アウトラインのメンバーと関連付けます。
IFコマンドとともに、条件付きテストの結果に基づいて、TRUEまたはFALSE (それぞれ1、0)を戻す関数を使用できます。これらの関数は、ブール関数と呼ばれます。
ブール関数を使用して、使用する式を決定します。この決定は、現在のメンバーの組合せの特性に基づきます。たとえば、特定の計算をProductディメンション内の入力データを含むメンバーのみに制限するには、@ISLEV(Product,0)に基づいたIFテストの後に計算を配置します。
関数パラメータのいずれかが@ISMBR(Sales -> Budget)のようなディメンション間メンバーである場合、TRUE (1)の値が戻されるには、ディメンション間メンバーのすべての部分が現在のセルのプロパティと一致している必要があります。
次のブール関数で条件を指定します。
表17-3 条件をテストするブール関数のリスト
関数 | 条件 |
---|---|
指定した勘定科目タグが現在のメンバーに付いている(費用タグなど) |
|
現在のメンバーが、指定したメンバーの祖先である |
|
現在のメンバーが、指定したメンバーの祖先であるか、指定したメンバー自体である |
|
現在のメンバーが、指定したメンバーの子である |
|
現在のメンバーが、指定したメンバーの子であるか、指定したメンバー自体である |
|
現在のメンバーが、指定したメンバーの子孫である |
|
現在のメンバーが、指定したメンバーの子孫であるか、指定したメンバー自体である |
|
指定したディメンションの現在のメンバーが指定した世代に属している |
|
指定したディメンションの現在のメンバーが指定したレベルに属している |
|
現在のメンバーが、指定したメンバーのいずれかと一致する |
|
現在のメンバーが、指定したメンバーの親である |
|
現在のメンバーが、指定したメンバーの親であるか、指定したメンバー自体である |
|
(指定したメンバーと同じディメンションの)現在のメンバーが、指定したメンバーと同じ世代に属している |
|
(指定したメンバーと同じディメンションの)現在のメンバーが、指定したメンバーと同じレベルに属している |
|
現在のメンバーが、指定したメンバーの兄弟である |
|
現在のメンバーが、指定したメンバーの兄弟であるか、指定したメンバー自体である |
|
指定したディメンションの現在のメンバーに対して、指定したUDAが存在する |
データベース・アウトラインに対する式を配置する場合は、計算フローを制御するために、IF、ELSE、ELSEIFおよびENDIFコマンドとブール関数のみを使用できます。計算スクリプト内では、その他の制御コマンドも使用できます。
計算スクリプトを開発する方法と、これらを使用してEssbaseによるデータベース計算を制御する方法の詳細は、「ブロック・ストレージ・キューブの計算スクリプトの開発」を参照してください。