条件测试

您可以定义使用条件测试或一系列条件测试来控制计算流的 Essbase 公式。与流命令结合使用时,可以根据测试结果使用返回 TRUE 或 FALSE(分别为 1 或 0)的布尔函数。

IF 和 ENDIF 命令定义一个条件块。IF 和 ENDIF 命令之间的公式仅在测试返回 TRUE (1) 时执行。如果测试返回 FALSE (0),则可以使用 ELSEELSEIF 命令指定替代操作。仅当上一个测试返回 FALSE (0) 时,才会执行每个 ELSE 命令后面的公式。仅当上一个 IF 命令返回 FALSE (0) 时,才会测试每个 ELSEIF 命令后的条件。

在计算脚本中使用条件公式时,请将其括在括号中,并将其与数据库大纲中的成员关联,如本节中的示例所示。

与 IF 命令结合使用时,可以使用基于条件测试结果返回 TRUE 或 FALSE(分别返回 1 或 0)的函数。这些函数被称为布尔函数

使用布尔函数确定要使用的公式。决策基于当前成员组合的特征。例如,要将特定计算限制为“产品”维中包含输入数据的成员,请在计算前添加基于 @ISLEV(Product,0) 的 IF 测试。

如果某个函数参数是跨维成员,例如 @ISMBR(Sales -> Budget),则跨维成员的所有部分必须与当前单元的属性匹配,才能返回值 TRUE (1)。

以下布尔函数指定条件:

表 17-3 测试条件的布尔函数列表

函数 条件

@ISACCTYPE

当前成员具有指定的帐户标记(例如,费用标记)

@ISANCEST

当前成员是指定的成员的祖先。

@ISIANCEST

当前成员是指定的成员的祖先,或者是指定的成员本身

@ISCHILD

当前成员是指定的成员的子代

@ISICHILD

当前成员是指定的成员的子代,或指定成员本身

@ISDESC

当前成员是该指定成员的后代

@ISIDESC

当前成员是指定的成员的后代,或指定成员本身

@ISGEN

指定维的当前成员在指定的生成中

@ISLEV

指定维的当前成员在指定的级别中

@ISMBR

当前成员与指定的任何成员匹配

@ISPARENT

当前成员是该指定成员的父代

@ISIPARENT

当前成员是指定的成员的父代,或指定成员本身

@ISSAMEGEN

当前成员(与指定成员在同一维中)与指定成员在同一代中

@ISSAMELEV

当前成员(与指定成员具有相同的维)与指定成员处于同一级别中

@ISSIBLING

当前成员是指定的成员的同级。

@ISISIBLING

当前成员是指定的成员的同级,或指定成员本身

@ISUDA

指定维的当前成员存在指定的 UDA

在数据库大纲中放置公式时,只能使用 IF、ELSE、ELSEIF 和 ENDIF 命令以及布尔函数来控制计算流。可以在计算脚本中使用其他控制命令。

有关如何开发计算脚本以及如何使用计算脚本来控制 Essbase 计算数据库的方式的信息,请参阅为块存储多维数据集开发计算脚本