ESSBASE的使用及优化
ESSBASE的使用及性能优化
计算脚本相关
Essbase中,一个指标可以通过计算公式调用自己得到,用@SHIFT函数实现。
如:
BC
-------
B1C1
B2C2
B3C3
…
其中,C2=C1+B2;C3=C2+B3 …
那么,指标C就可用公式:@SHIFT(C,-1)+B来实现。
数据加载不进的问题,某个维存在空值的情况,或事实表数据没有清洗干净,报错如下:
不选时间维的计算公式:
IF(@ISGEN("sj",1))
#MISSING;
ELSE
qmqsye-bqxzqs;
ENDIF;
ESSBASE求百分比指标:
number%number->Year->Market->Product->Scenario;
求同期值公式:
IF(@ISGEN("D_Date",6))
(@MDSHIFT(set01, -36,"D_Date",@GENMBRS ("D_Date",6)));
ELSEIF(@ISGEN("D_Date",5))
(@MDSHIFT(set01, -12,"D_Date",@GENMBRS ("D_Date",5)));
ELSEIF(@ISGEN("D_Date",4))
(@MDSHIFT(set01, -4, "D_Date",@GENMBRS ("D_Date",4)));
ELSEIF(@ISGEN("D_Date",3))
(@MDSHIFT(set01, -2, "D_Date",@GENMBRS ("D_Date",3)));
ELSEIF(@ISGEN("D_Date",2))
(@MDSHIFT(set01, -1, "D_Date",@GENMBRS ("D_Date",2)));
ENDIF;
求前期值公式:
IF(@ISGEN("D_Date",7))
@MDSHIFT(set01, -1, "D_Date",@GENMBRS ("D_Date",7));
ELSEIF(@ISGEN("D_Date",6))
@MDSHIFT(set01, -1, "D_Date",@GENMBRS ("D_Date",6));
ELSEIF(@ISGEN("D_Date",5))
@MDSHIFT(set01, -1, "D_Date",@GENMBRS ("D_Date",5));
ELSEIF(@ISGEN("D_Date",4))
@MDSHIFT(set01, -1, "D_Date",@GENMBRS ("D_Date",4));
ELSEIF(@ISGEN("D_Date",3))
@MDSHIFT(set01, -1, "D_Date",@GENMBRS ("D_Date",3));
ELSEIF(@ISGEN("D_Date",2))
@MDSHIFT(set01, -1, "D_Date",@GENMBRS ("D_Date",2));
ENDIF;
国税求同期值公式:
IF (@ISGEN ("时间",5)) "去年同期欠缴税额"=@PRIOR ("本期欠缴税额",365,@genmbrs("时间", 5));
ELSEIF (@ISGEN ("时间",4)) "去年同期欠缴税额"=@PRIOR("本期欠缴税额",12,@genmbrs("时间", 4));
ELSEIF (@ISGEN ("时间",3)) "去年同期欠缴税额"=@PRIOR ("本期欠缴税额", 4,@genmbrs("时间", 3));
ELSEIF (@ISGEN ("时间",2)) "去年同期欠缴税额"=@PRIOR ("本期欠缴税额",1,@genmbrs("时间", 2));
ENDIF;
国税求前期值公式:
IF (@ISGEN ("时间",5)) "上期欠缴税额"=@PRIOR ("本期欠缴税额",1,@genmbrs("时间", 5));
ELSEIF (@ISGEN ("时间",4)) "上期欠缴税额"=@PRIOR("本期欠缴税额",1,@genmbrs("时间", 4));
ELSEIF (@ISGEN ("时间",3)) "上期欠缴税额"=@PRIOR ("本期欠缴税额", 1,@genmbrs("时间", 3));
ELSEIF (@ISGEN ("时间",2)) "上期欠缴税额"=@PRIOR ("本期欠缴税额",1,@genmbrs("时间", 2));
ENDIF;
Unix下后台启动和停止Essbase服务
启动命令:
nohup ESSBASE password -b &
停止方法:
手动:交互式,在esscmd中用shutdownserver命令,根据系统提示完成。
脚本:echo "login essadmin