-1-ESSBASE的使用及性能优化计算脚本相关Essbase中,一个指标可以通过计算公式调用自己得到,用@SHIFT函数实现。如:BC-------B1C1B2C2B3C3…其中,C2=C1+B2;C3=C2+B3…那么,指标C就可用公式:@SHIFT(C,-1)+B来实现。数据加载不进的问题,某个维存在空值的情况,或事实表数据没有清洗干净,报错如下:不选时间维的计算公式:IF(@ISGEN(sj,1))#MISSING;ELSEqmqsye-bqxzqs;ENDIF;ESSBASE求百分比指标:number%number-Year-Market-Product-Scenario;求同期值公式:IF(@ISGEN(D_Date,6))(@MDSHIFT(set01,-36,D_Date,@GENMBRS(D_Date,6)));-2-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;-3-国税求前期值公式: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服务启动命令:nohupESSBASEpassword-b&停止方法:手动:交互式,在esscmd中用shutdownserver命令,根据系统提示完成。脚本:echologinessadminpasswordonlocalhost;altersystemshutdown;exit;|essmsh–iHP-UX下配置Essbase连本机Oracle8i的ODBC配置环境HP-UXIBMDB2OlapSever7.1Oracle817配置.profile将Oracle的.profile文件环境变量内容copy到essadmin的.profile文件。[注]:根据实际情况修改至.profile文件正确,不要引起两个.profile文件间内容的冲突。例如:exportARBORPATH=/essbaseexportSHLIB_PATH=$SHLIB_PATH:$ARBORPATH/bin:$ARBORPATH/dllsexportPATH=$PATH:$ARBORPATH/bin:$ARBORPATH/dlls-4-exportODBCINI=/essbase/.odbc.iniPATH=$ORACLE_HOME/bin:$PATH;exportPATHLD_LIBRARY_PATH=$ORACLE_HOME/lib64;exportLD_LIBRARY_PATHORACLE_BASE=/oracle;exportORACLE_BASEORACLE_HOME=$ORACLE_BASE/ora817;exportORACLE_HOMENLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280ORA_TERM=hp;exportORA_TERMORACLE_SID=DW;exportORACLE_SIDORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data;exportORA_NLS33SHLIB_PATH=$ORACLE_HOME/lib:/usr/lib:$SHLIB_PATH;exportSHLIB_PATHTMPDIR=/oracle/tmpumask022配置关于oracle的odbc得到.odbc.ini文件模板运行$ARBORPATH下的inst-sql.sh,将在$ARBORPATH下生成.odbc.ini文件。配置.odbc.inivi.odbc.ini,编辑得到类似如下内容:[ODBCDataSources]dw=INTERSOLV3.11Oracle8Driver[dw]Driver=/essbase/dlls/ARor815.slDescription=Oracle8ServerName=dw[ODBC]Trace=0TraceFile=odbctrace.outTraceDll=/essbase/dlls/odbctrac.slInstallDir=/essbase/dlls[注]:默认的Driver为ARor813.sl,对于oracle817数据库,Driver应改为ARor815.sl。测试用Essbase的终端(ApplicationManager)测试odbc是否配通。小结配置HPUX下Essbase连本机Oracle的ODBC,比较简单,不用像Informix安装Client端,直接使用Essbase自带的driver。只需修改.profile和.odbc.ini文件。-5-AIX下配置Essbase到本机DB2的ODBC过程整个过程分为两个步骤:配置ODBC:以下是万佳BI项目EssbaseforAIX的ODBC的配置过程:在万佳BI项目中,配置从DB2到Essbase的ODBC过程如下:3.以admin登录(如果Essbase的user为admin),编辑admin用户的.profile文件,加入如下部分:./db2system/db2inst1/sqllib/db2profile(与DB2的安装路径有关)exportARBORPATH=/essbase(essbase的安装路径)exportLIBPATH=$LIBPATH:$ARBORPATH/bin:$ARBORPATH/dllsexportPATH=$PATH:$ARBORPATH/bin:$ARBORPATH/dlls#exportODBCINI=/home/admin/.odbc.ini(以上部分的第一句最重要,最后一句可以不要)4。logout并再次login用户admin,运行/essbase/inst-sql.sh;提问:intersolvorIBM-DB2?选择:DB25。编辑admin用户下(/home/admin/)的.odbc.ini文件,确保有如下部分:例:[ODBCDataSources]DWCN=IBMDB2ODBCDriver[DWCN]Driver=/db2system/db2inst1/sqllib/lib/db2.o(与DB2的安装路径有关)Description=DB2Host=aixf85(主机名)Database=dwcn(数据库名)#Username=db2inst1(用户名,可不输入)#Password=(此外即使输入口令也无用)6。在命令行下运行:su-adminESSBASEpassword7。在NT客户端打开Applicationmanager,在任意一个正常的Database上建立一个新的rule,并用此rule的opensql去测试以上对ODBC配置的正确性。CatalogDB:上面的过程完成之后,如果直接使用,对于数据量小的loaddata过程偶而可以正确完成,但对于大数据量的loaddata过程不能正确完成,系统提示网络方面的错误(如图所示)。-6-我认为,出现这个问题是因为同一台主机上共存DB2和Essbase,在.odbc.ini中指定的数据源是直接到本机数据库中找到的,而不是通过网络。这种通讯方式是Essbase不能接受的。试想如果DB2和Essbase分别装在不同的机上,在Essbase这台机上最终势必要配置连到目标DB的ODBC(也就是配置.odbc.ini文件),该ODBC中的数据源指定的DB就一定要通过网络了,也就是说这个目标DB是Essbase这台机器认识的(一般是安装了该种DB产品的客户端),这就要首先建立连到目标DB的ODBC。因此,如果DB2和Essbase在同一机上的时候,就少了这一个过程。因此,还必须做如下方面的工作:1.db2catalogtcpipnodevgsznode(新的节点名)remote168.1.6.152(IP地址)server50000(端口号);2.db2catalogdbdwcnasszdc(dwcn的别名)atnodevgsznode;3.编辑Essbase用户下的.odbc.ini文件,将数据源的名字指定为szdc。通过如上操作,就相当于通过网络建立了一个连到DB2的ODBC。这样,以后在Essbase中openSQL的时候就要选szdc了。Essbase的一些初级问题Q:资料说blocksize的大小最好在8k~64k,但是实际上做出来的模型的blocksize往往只有几百或几十,有没有很大影响?A:在不影响稳定的情况下,应尽量将其调大。Q:blockdensity和blocknumber之间有什么关系?blockdensity自然越大越好,但是往往它越大,blocknumber就越多,如何平衡?A:一定要多做测试,测database的工作性能、测稳定性。尽量将density调大,这样才能保证模型的稳定性。毕竟稳定压倒一切。Q:在DataWareHouse中,如果串行地对多个database进行操作,例如加载数据,计算等,经常会出现错误,错误原因是无法分配内存;但是手工将每个database分开操作,过程和自动化过程完全一样,又没有错误。是不是essbase内存分配的问题?如何解决?A:我认为这是Essbase自身对内存管理的问题。因此,在流程设计中应该避开这些问题。方法就是操作完