与成员相关的函数
在公式中使用 Essbase 成员函数可指定成员列表和范围、生成成员列表、处理成员名称以及跨维处理成员组合。
指定成员列表和范围
使用某些 Essbase 计算函数时,可能需要输入大纲成员列表和/或成员范围。列表可以是逗号分隔的文字成员名称列表,也可以由计算函数返回。可以使用冒号语法指定范围,也可以由计算函数返回。
例如, @ISMBR 函数将测试当前正在计算的成员是否与指定成员的任何列表或范围匹配。
下表列出了用于指定成员的语法:
表 17-8 中用于指定成员列表和范围的语法
| 成员列表或范围 | 语法 |
|---|---|
|
一个会员 |
成员名称。 例如: |
|
成员的列表 |
成员名称的逗号分隔 (,) 列表。 例如: |
|
同一级别的所有成员范围,介于两个定义成员之间并包括这两个定义成员 |
由冒号 (:) 分隔的两个定义成员名称。例如: |
|
同一代中所有成员的范围,介于两个定义成员之间并包括这两个定义成员 |
由两个冒号 (::) 分隔的两个定义成员名称。 例如: |
|
函数生成的成员列表或成员范围 |
有关成员列表内容和相应函数的列表,请参阅生成成员列表。 |
|
范围和列表的组合 |
用逗号 (,) 分隔每个范围、列表和函数。 例如: 或者 |
如果未在需要成员的函数中指定成员列表或成员范围,则 Essbase 将使用标记为时间的维的 0 级成员。如果未将维标记为时间,则 Essbase 会显示错误消息。
生成成员列表
Essbase 成员集函数允许您生成基于指定成员或成员列表的成员列表。
表 17-9 成员集函数列表
| 函数 | 成员列表的内容 |
|---|---|
|
指定成员所有祖先,包括指定成员作为共享成员出现的祖先。此函数不包含指定成员。 |
|
|
指定成员(包括指定成员作为共享成员出现的祖先)的所有祖先。此函数包括指定的成员。 |
|
|
指定层代或级别上为指定成员祖先的成员 |
|
|
指定成员(可选,最多指定生成或级别)的所有祖先,但不是指定成员 |
|
|
指定成员的所有祖先(可选,最多指定层代或级别),包括指定成员 |
|
|
指定成员列表的所有祖先(可选,最多指定层代或级别),但不包括指定成员 |
|
|
指定成员列表(可选,最多指定层代或级别)的所有祖先,包括指定成员 |
|
|
与指定属性维成员关联的所有基维成员 |
|
|
与满足指定条件的属性关联的所有基本成员 |
|
|
名称字符串值在两个指定字符串标记之间(包括这两个字符串标记)且包含这两个字符串标记的所有成员 |
|
|
指定成员的所有子项,但不包括指定成员 |
|
|
指定成员的所有子项,包括指定成员 |
|
|
为指定维计算的当前成员 |
|
|
指定成员的所有后代(可选,最多指定层代或级别),但不是共享成员的指定成员或后代 |
|
|
指定成员的所有后代(可选,最多指定层代或级别),包括指定成员,但不包括共享成员的后代 |
|
|
指定成员列表的所有后代(可选,降至指定层代或级别),但不包括指定成员 |
|
|
指定成员列表的所有后代(可选,降至指定层代或级别),包括指定成员 |
|
|
指定成员的所有后代(可选,最多指定层代或级别),包括共享成员的后代,但不包括指定成员 |
|
|
指定成员的所有后代(可选,最多指定层代或级别),包括共享成员的指定成员和后代 |
|
|
与指定令牌名称匹配的成员名称 |
|
|
与指定令牌名称不匹配的成员名称 |
|
|
通过针对成员列表中的每个成员调用成员集函数,扩展成员搜索 |
|
|
指定维中指定层代的所有成员 |
|
|
指定维中指定级别的所有成员 |
|
|
与指定模式匹配的用户名。 |
|
|
需要多个列表参数的函数要处理的单独成员列表 |
|
|
与指定的通配符选择匹配的所有成员 |
|
|
与比较标准匹配的成员名称 |
|
|
指定成员的父项 |
|
|
名称为所提供字符串的成员 |
|
|
合并另一个函数处理的两个成员列表的列表 |
|
|
指定维中正在计算的当前成员的父代 |
|
|
来自一个维的指定成员列表,该成员列表与来自另一个维的指定成员范围 |
|
|
已从中删除某些成员的成员列表 |
|
|
指定层代或级别上位于指定成员之上或之下的所有成员 |
|
|
用于标识指定成员之间所有共享成员的成员列表 |
|
|
指定成员(但不是指定成员)的所有同级 |
|
|
指定成员的所有同级,包括指定成员 |
|
|
数据库大纲中指定成员之前的所有同级,但不是指定成员 |
|
|
数据库大纲中指定成员之后的所有同级,但不是指定成员 |
|
|
数据库大纲中指定成员之前的所有同级,包括指定成员 |
|
|
数据库大纲中指定成员之后的所有同级,包括指定成员 |
|
|
与成员之间的指定距离的同级 |
|
|
成员的下一个或最右侧的兄弟姐妹 |
|
|
成员的前一个或最左侧的兄弟姐妹 |
|
|
在 Essbase Server 上定义了公用 UDA 的所有成员 |
|
|
一个成员列表,用于标识在同一个级别上的两个指定的单维和/跨维成员之间(含)的成员范围 |
处理成员名称
在块存储公式和计算脚本中,可以将 Essbase 成员名称用作字符串。
下表列出了字符串处理函数:
表 17-10:字符串处理函数的列表
| 函数 | 字符串处理 |
|---|---|
|
创建一个字符串,将成员名称或指定的字符串附加到其他成员名称或字符串 |
|
|
以字符串形式返回成员名称 |
|
|
从另一个字符串或成员名称返回字符的子字符串 |
跨维使用成员组合
Essbase 公式中的跨维运算符 -> 是引用特定成员组合的多维数据值的一种方法。FIX 命令可能更适合性能。
使用跨维运算符指向特定成员组合的数据值。使用连字符 (-) 和大于符号 (>) 创建跨维运算符。请勿在跨维运算符和成员之间添加空格。
注意:
使用跨维运算符可能会对性能产生重大影响。有关优化准则,请参见 Cross-Dimensional Operators in Member Formulas 。
下面是一个多维立方体的简化图示,其中 Jan 是 X 轴上的第一列,Sales 是 Y 轴上的第四行和最顶的行,Actual 是 Z 轴上的第一行。在此示例中,“销售”->“一月”->“实际”是单个数据值的交集。
图 17-2 指定单个数据值

以下示例将杂项费用分配给每个市场中的每个产品,说明如何使用跨维运算符。所有市场中所有产品的 Misc_Expenses 价值是已知的。该公式将 Misc_Expenses 总值的百分比分配给每个“产品”->“市场”组合。分配基于每个市场中每个产品的销售价值。
Misc_Expenses = Misc_Expenses -> Market -> Product * (Sales / ( Sales -> Market -> Product));Essbase 会循环使用数据库,执行以下计算:
-
将当前成员组合的销售值除以所有市场和所有产品的总销售值(销售 -> 市场 -> 产品)。
-
将步骤 1 中计算的值乘以所有市场和所有产品的 Misc_Expenses 值 (Misc_Expenses -> Market -> Product)。
-
将结果分配给当前成员组合的 Misc_Expenses。