使用 @CalcMgrExecuteEncryptMaxLFile 執行 MaxL 指令碼檔案

@CalcMgrExecuteEncryptMaxLFile 的語法為:

FIX ("Sales","100-10","New York","Actual")
           "Jan"(
           @CalcMgrExecuteEncryptMaxLFile("2115028571,2505324337","C:/Temp/exportdata.mxls", @List("906388712099924604712352658511","0893542980829559883146306518502837293210"), "true");
         ENDFIX

第一個引數是私密金鑰,第二個引數是 MaxL 指令碼檔案,第三個引數是指令碼的引數,最後一個引數表示是否以非同步方式執行此指令碼 ("true" 表示非同步,而 "false" 表示同步)。

此方法有一些問題。第一個問題是必須執行相同指令碼的次數:它會針對 FIX 陳述式的所有成員組合執行。第二個問題是如果 Oracle Essbase 判斷 FIX 陳述式的成員組合中不存在區塊,就可能完全不會執行指令碼。

您通常會希望 MaxL 指令碼只執行一次,而且使用 RUNJAVA 命令:

RUNJAVA com.hyperion.calcmgr.common.cdf.MaxLFunctions
    <LOG FILE> OPTIONAL ex., "logfile=c:/Temp/maxlrule.log"  The path should be accessible from the ESSBASE process.
    <ASYNCH FLAG> OPTIONAL ex., "true"  This means calc engine does not wait for the completion of the MaxL script. The default is "false"
    <ALL OTHER PARAMETERS YOU PASS TO ESSMSH>

範例:

   RUNJAVA com.hyperion.calcmgr.common.cdf.MaxLFunctions 
   "logfile=c:/Temp/maxlrule.log"
   "-D" 
   "c:\\Temp\\maxl.msh" 
   "28567271,1186612387"
   "893848844082678214004255849650"
   "4647275840619320283077900267208176084380"
   "{varAppName}";