条件测试
您可以定义使用条件测试或一系列条件测试来控制计算流的 Essbase 公式。与流命令结合使用时,可以根据测试结果使用返回 TRUE 或 FALSE(分别为 1 或 0)的布尔函数。
IF 和 ENDIF 命令定义一个条件块。IF 和 ENDIF 命令之间的公式仅在测试返回 TRUE (1) 时执行。如果测试返回 FALSE (0),则可以使用 ELSE 和 ELSEIF 命令指定替代操作。仅当上一个测试返回 FALSE (0) 时,才会执行每个 ELSE 命令后面的公式。仅当上一个 IF 命令返回 FALSE (0) 时,才会测试每个 ELSEIF 命令后的条件。
在计算脚本中使用条件公式时,请将其括在括号中,并将其与数据库大纲中的成员关联,如本节中的示例所示。
与 IF 命令结合使用时,可以使用基于条件测试结果返回 TRUE 或 FALSE(分别返回 1 或 0)的函数。这些函数被称为布尔函数。
使用布尔函数确定要使用的公式。决策基于当前成员组合的特征。例如,要将特定计算限制为“产品”维中包含输入数据的成员,请在计算前添加基于 @ISLEV(Product,0) 的 IF 测试。
如果某个函数参数是跨维成员,例如 @ISMBR(Sales -> Budget),则跨维成员的所有部分必须与当前单元的属性匹配,才能返回值 TRUE (1)。
以下布尔函数指定条件:
表 17-3 测试条件的布尔函数列表
| 函数 | 条件 |
|---|---|
|
当前成员具有指定的帐户标记(例如,费用标记) |
|
|
当前成员是指定的成员的祖先。 |
|
|
当前成员是指定的成员的祖先,或者是指定的成员本身 |
|
|
当前成员是指定的成员的子代 |
|
|
当前成员是指定的成员的子代,或指定成员本身 |
|
|
当前成员是该指定成员的后代 |
|
|
当前成员是指定的成员的后代,或指定成员本身 |
|
|
指定维的当前成员在指定的生成中 |
|
|
指定维的当前成员在指定的级别中 |
|
|
当前成员与指定的任何成员匹配 |
|
|
当前成员是该指定成员的父代 |
|
|
当前成员是指定的成员的父代,或指定成员本身 |
|
|
当前成员(与指定成员在同一维中)与指定成员在同一代中 |
|
|
当前成员(与指定成员具有相同的维)与指定成员处于同一级别中 |
|
|
当前成员是指定的成员的同级。 |
|
|
当前成员是指定的成员的同级,或指定成员本身 |
|
|
指定维的当前成员存在指定的 UDA |
在数据库大纲中放置公式时,只能使用 IF、ELSE、ELSEIF 和 ENDIF 命令以及布尔函数来控制计算流。可以在计算脚本中使用其他控制命令。
有关如何开发计算脚本以及如何使用计算脚本来控制 Essbase 计算数据库的方式的信息,请参阅为块存储多维数据集开发计算脚本。