下面的X代表数值。详细参考: Oracle Essbase Database Administrator's Guide
Calculation/Operation | Result |
---|---|
X + #MISSING |
X |
X – #MISSING #MISSING – X |
X -X |
X * #MISSING |
#MISSING |
X / #MISSING #MISSING / X X / 0 |
#MISSING #MISSING #MISSING |
X % #MISSING #MISSING % X X % 0 |
#MISSING #MISSING #MISSING |
X == #MISSING |
False, unless X is #MISSING |
X != #MISSING X <> #MISSING |
True, unless X is #MISSING True, unless X is #MISSING |
(X <= #MISSING) |
(X <=0) |
(X >= #MISSING) |
(X >=0) or (X == #MISSING) |
(X > #MISSING) |
(X > 0) |
(X < #MISSING) |
(X < 0) |
X AND #MISSING: 1 AND #MISSING (1 represents any nonzero value) 0 AND #MISSING #MISSING AND #MISSING |
#MISSING 0 #MISSING |
X OR #MISSING: 1 OR #MISSING (1 represents any nonzero value) 0 OR #MISSING #MISSING OR #MISSING |
1 #MISSING #MISSING |
IF (#MISSING) |
IF (0) |
f (#MISSING) |
#MISSING for any Essbase function of one variable |
f (X) |
#MISSING for any X not in the domain of f, and any Essbase function of more than one variable (except where specifically noted) |
关于essbase方法的分类大概分为如下几种:使用如下的方法可以在计算脚本中起到事半功倍的效果。
方法类别 | 方法用途 | 具体方法 (红色需要注意) |
Boolean 布尔类型 | 一般和IF命令一起使用,返回 TRUE/FALSE 1/0 用于执行各种逻辑判断。 | @ISACCTYPE当前成员是否有account标签。 @ISGEN @ISLEV @ISSAMEGEN @ISSAMELEV @ISMBR @ISMBRUDA 是否用户定义的属性在这个成员上。 @ISUDA 是否成员维度有用户定义的属性。 @ISRANGENONEMPTY 定义的范围是否存在数据 |
RelationShip 关系型 | 关系函数根据当前单元格位置和一系列参数在数据库中查找特定的值。就是根据当前成员查找其相关的值。 |
@ATTRIBUTEBVAL 从布尔属性维度找到相关属性值。 @ATTRIBUTESVAL 从文本属性维度找到相关属性值。 @ATTRIBUTEVAL 从数字/时间属性维度找到相关属性值。 @CURGEN 当前成员所在维度的代数成员。 @GEN 当前成员所在代的数字。 @CURLEV 当前成员所在维度的LEV成员。 @LEV 当前成员所在LEV的数字。 @MDANCESTVAL 任意数量维度的成员组合的祖先。@ANCESTVAL 成员的祖先。 @MDPARENTVAL 任意数量维度的成员组合的父母。@PARENTVAL 成员的父母。 @SANCESTVAL 根成员下的 确定深度的共享成员的祖先。 @SPARENTVAL 根成员下的 确定深度的共享成员的祖先。 @XREF 与正在计算的数据库的值不同。 @XWRITE 将值写入与计算值不同的数据库。 |
Mathematial 数学方法 | 可以使用数学函数进行高级计算。 | @EXP 自然对数e为底 ,表达式的幂。 @POWER 指数表达式。 @Factorial 阶乘。 @LN 自然对数e。 @LOG 任意数的自然对数。 @LOG10 以10为底的自然对数。 @MAXS 跳过空值,取最大值。 @REMAINDER 残值。 @VAR 方差。 @ VARPER 方差百分比。 |
Member Set 成员集合型 | 返回一个成员的list。 : 基于lev返回 ,Jan:Dec 返回Jan和Dec所在的lev的成员,包含头尾。 ::基于gen返回,Jan:Dec 返回Jan和Dec所在的Gen的成员,包含头尾。 |
@ALLANCESTORS 该成员所有的祖先,并包括共享成员。 @EQUAL 去匹配指定的成员。 建议看对应函数语法。 |
Range and Financial 区间,财务型 | Range函数接受一组成员作为参数。 RangeList :一个维度上面的一系列成员。
XrangeList:一个或者多个维度上面的一系列成员。 @XRANGE(Jan:Mar) 返回 Jan Feb Mar 对于这类方法,如果没有指定Rangelist和Xrangelist 则 标注为时间维度中0级的成员成为默认成员。如果也没维度标签是时间维度则报错。 |
@ACCUM 在一个区间的成员和。 @SUMRANGE 一系列指定成员汇总列表。 @AVGRANGE 在一个区间的成员平均数。 @COMPOUND 以一定的比率,计算一个区间的复利(混合利率)。 @CURRMBRRANGE 基于相对位置的成员会被计算。 @DECLINE 使用余额递减,去计算一个成员在一个期间的折旧depreciation。 @DISCOUNT 以一定的利率和时间维度,去计算指定成员的折现值。 @GROWTH 代表线性增长的一系列值。 @INTEREST 代表线性增长的成员。 @IRR 跨时间或者指定的成员来计算 现金流内部收益率。 @MAXRANGE 跨范围最大成员。 @MAXSRANGE 剔除#MISSING和0 求出最大值。 @NEXT 区间的下一个值。 @NEXTS 跳过#MISSING/0 或者两者的下个值。 @NPV net Present value 净现值关于收入和支出。 @PTD period-to-date 期间到日期的值。 @PRIOR 以前的值。 @PRIORS 跳过#MISSING/0以前的值。 @RANGE 一个成员和其他维度成员组成的值。@ RANGEFIRSTVAL 第一个值。 @RANGELASTVAL最后一个值。 @SHIFT ,SHIFTPLUS,SHIFTMINUS 一系列下一个区间的值。 @SLN 根据时间区间,用直线折旧法计算资产折旧金额。 @SYD 根据时间区间,用年度数字 计算资产折旧金额。 @XRANGE 同一Lev的成员列表。 |
Allocation 分配行 |
|
@ALLOCATE 分配值到最低lev。 @MDALLOCATE 在多维中分配到最低lev。 |
Forecasting 预测型 | 平滑的预测数据。 | @MOVAGE 使用移动平均值来预测。 @MOVMAX 使用移动最大值来预测。 @MOVMED 使用移动中位数来预测。 @MOVSUM 使用移动和来预估。 @MOVSUMX 使用移动和来预估。 @SPLINE 使用平滑样条的曲线来预估。 @TREND 根据历史的曲线拟合未来数据值。 |
Statiscal 统计型 | 计算高级统计例如相关性correlation和方差variance. | @CORRELATION 两个并行数据加之间的相关系数。 @MODE 众数,出现频率最多的数据。 @MEDIAN 中位数。 @STDEV standard deviation 标准差。 @STDEVRANGE @VARIANCE 基于样本计算的方差。 @VARIANCEP 基于总体计算方差。 |
data & time 日期型 | @TODATE 用来吧日期字符串转换为数字。 | |
Miscellaneous 混合型 | @CALCMODE 指定计算公式在单元格模式,还是块模式。以及是从上到下计算还是从下到上计算。 @CONCATENATE,@SUBSTRING,@NAME 用来操作字符串。 @RETURN 通过自定义信息来结束计算。 @ALLOCATE @CREATEBLOCK 使用值或#MISSING来填充。 |
|
Hybrid Aggregation Mode 支持型 | 支持 @ABS,@ALLANCESTORS,@ALIAS,@ANCESTORS,@ATTRIBUTE,@ATTRIBUTEBVAL,@ATTRIBUTESVAL,@ATTRIBUTEVAL,@AVG, 其余不支持。 |
|
Custom-defined 自定义型 | 使用java编写并在服务上注册。 |
使用计算脚本创建与数据库大纲不同的计算。计算命令是计算脚本的基本元素。
计算命令分类 |
方法用途 | 具体方法 (红色需要注意) |
Conditional 条件命令 | 条件命令用来控制事件的流向。 | IF ELSEIF ELSE ENDIF |
Control Flow 控制流命令 | 被重复用作限制数据到一个子区。 | FIX ENDFIX , EXCLUDE ENDEXCLUDE :限制计算成员。 LOOP ENDLOOP:重复步骤。 FIXPARALLEV ENDFIXPARALLEV 在子集上数据块启动并行计算。 |
Data Declaration 数据声明命令 | 用于声明并初始化 临时值。 在查询中不会返回值,只有在计算脚本才执行。如果想展示需要在数据库大纲创建,或者将变量赋值给现有成员。 |
ARRAY VAR |
Functional 方法命令 | 用来计算,数据复制,导出数据,清除数据,货币转换。 | AGG: CALC ALL: CALC AVERAGE: CALC DIM: CALC FIRST: CALC LAST: CCONV: CLEARBLOCK: CLEARCCTRACK: CLEARDATA: DATAEXPORT: DATAEXPORTCOND: SET DATAEXPORTOPTIONS: SET DATAIMPORTIGNORETIMESTAMP: SET AGGMISSG SET CACHE SET CCTRACKCALC: SET CLEARUPDATESTATUS: SET FRMLBOTTOMUP SET FRMLRTDYNAMIC: SET LOCKBLOCK: SET MSG; SET NOTICE: SET REMOTECALC: SET RUNTIMESUBVARS: SET UPDATECALC: SET UPTOLOCAL:
|
Member Formulas 成员公式 | 用于在脚本中计算默认的大纲公式。 | “Profit_%”; Expenses=Payroll + Marketing; |