学习基本计算脚本语法

Essbase 块存储多维数据集设计计算脚本时,需要学习一些语法规则。命令通常以分号终止。必须在特定成员名称周围使用引号。Essbase 可以帮助您验证语法。

总体语法规则

Essbase 块存储多维数据集包含一组灵活的命令,可用于控制多维数据集的计算方式。可以从命令和公式构建计算脚本。

创建计算脚本时,必须应用以下规则:

  • 使用分号 (;) 结束每个公式或计算脚本命令。例如:

    示例 1

    CALC DIM(Product, Measures);

    示例 2

    DATACOPY Plan TO Revised_Plan;

    示例 3

    "Market Share" = Sales % Sales -> Market;

    示例 4

    IF (Sales <> #MISSING)
       Commission = Sales * .9;
       ELSE
          Commission = #MISSING;
    ENDIF;

    无需用分号结束以下 conditionalcontrol flow commands

    • IF
    • ENDIF
    • ELSE
    • ELSIF
    • FIX
    • 结尾
    • EXCLUDE
    • 结束排除
    • LOOP
    • 结束循环

    注意:

    虽然不是必需的,但 Oracle 建议在公式中用分号结束每个 ENDIF 语句。

  • 如果成员名称与以下任一条件匹配,请用双引号 (" ") 将成员名称括起来:

    • 包含空格。

      例如,在以下公式中,“期初库存”和“期末库存”以双引号括起来:

      "Opening Inventory" = "Ending Inventory" - Sales + Additions;
    • 与运算符、函数名称或关键字相同。

      请参阅计算脚本、报表脚本、公式、筛选器以及替代和环境变量值中的命名惯例

    • 包括任何非字母数字字符,例如连字符 ( - )、星号 ( * ) 或斜杠 ( / )。

    • 仅包含数字或以数字开头。

      例如:"100" 或 "10Prod"

    • 以 & 符号开始。前导和符号 (&) 保留用于替代变量。如果成员名称以 & 开头,则将该名称括在引号中。

      注意:

      在计算脚本中,不要将替代变量括在引号中。

    • 包含点 (.)

      例如:1999。一月或 0.100

  • 如果您使用的是 IF 语句或相互关联的公式,请将公式括在括号中以将其与指定成员关联。

    例如,以下公式与数据库大纲中的委员会成员关联:

    Commission
    (IF(Sales < 100)
       Commission = 0;
    ENDIF;)
  • 使用 ENDIF 语句结束公式中的每个 IF 语句

    例如,上一个公式包含一个简单的 IF...ENDIF 语句。

  • 如果使用的 IF 语句嵌套在另一个 IF 语句中,则应以 ENDIF 语句结束每个 IF。

    例如:

    "Opening Inventory"
    (IF (@ISMBR(Budget))
       IF (@ISMBR(Jan))
          "Opening Inventory" = Jan;
       ELSE 
          "Opening Inventory" = @PRIOR("Ending Inventory");
       ENDIF;
    ENDIF;)
  • 您无需使用 ENDIF 语句结束 ELSEELSEIF 语句。

    例如:

    Marketing
    (IF (@ISMBR(@DESCENDANTS(West)) OR @ISMBR(@DESCENDANTS(East)))
       Marketing = Marketing * 1.5;
    ELSEIF(@ISMBR(@DESCENDANTS(South)))
       Marketing = Marketing * .9;
    ELSE 
       Marketing = Marketing * 1.1;
    ENDIF;)

    注意:

    如果在公式中使用 ELSE IF(带空格)而不是 ELSEIF(一个单词),则必须为 IF 语句提供 ENDIF。

  • 使用 ENDFIX 语句结束每个 FIX 语句。

    例如:

    FIX(Budget,@DESCENDANTS(East))
       CALC DIM(Year, Measures, Product);
    ENDFIX
  • 使用 ENDEXCLUDE 语句结束每个 EXCLUDE 语句。

使用 Essbase Web 界面编写计算脚本时,可以使用语法检查器对其进行验证。

在计算脚本中使用备注

可以为计算脚本添加注释。运行计算脚本时将忽略备注。

要包含注释,请以 /* 开头注释,以 */ 结束注释。例如:

/* This calculation script comment
   spans two lines. */

检查语法

Essbase Web 界面中的计算脚本编辑器包括语法验证,用于标记计算脚本中的语法错误(例如函数名称类型错误)。

如果未发现语法错误,则 Essbase 指示语法检查成功。

如果发现语法错误,则 Essbase 将指示语法检查失败,并一次显示一个错误,指示错误发生的位置。

注意:

语法检查器无法确定语义错误,当计算脚本无法按预期工作时会出现这些错误。要查找语义错误,请运行计算并检查结果,以确保它们符合您的预期。