您可以使用計算追蹤功能來分析成員公式處理,以及精簡計算命令檔。
順利對立方體執行計算命令檔之後,您可以利用計算追蹤功能存取記錄的計算資訊。
追蹤計算不會變更計算行為。若在 Smart View 啟動計算,而且管理員對連線的伺服器啟用計算追蹤功能的話,Smart View 就會在計算執行之後,顯示一個包含詳細資訊的彈出式對話方塊。您可以將此彈出式對話方塊中的計算追蹤資訊貼到文字編輯器中。或者,也可以從 Essbase 資料庫檔案目錄中的 calc_trace.txt
取得相同的資訊。
計算的結果若不如預期,您可以利用計算追蹤資訊進行計算命令檔執行除錯。
啟用案例管理的應用程式不支援計算追蹤功能。
若要啟用計算追蹤功能,管理員必須先開啟 CALCTRACE 應用程式組態參數。應用程式啟用計算追蹤功能後,有兩種方式可充分利用此功能:
系統將會計算命令檔中所含的完整計算範圍,但在計算期間只會追蹤標示的資料儲存格內容。
標示資料儲存格在計算期間若未經修改,您將會見到儲存格未修改訊息。
SET TRACE mbrList
(對成員清單開啟計算追蹤功能) 與 SET TRACE OFF
(停用計算追蹤功能,直到在命令檔中發現新的 SET TRACE) 搭配使用,以追蹤計算命令檔區段。若要使用 SET TRACE 命令,您必須在 Smart View 之外,使用立方體設計工具或 Essbase Web 介面中的「工作」頁面執行計算命令檔。SET TRACE ("100-10", "California", "Jan", "Sales", "Budget"); FIX("California", "Budget") "Sales" ( "100-10" = @MEMBER(@CONCATENATE(@NAME(@PARENT("Product")), "-20")) / 10; ); ENDFIX;
Sample Basic 有兩個稀疏維度:Product 和 Market。成員公式位於 Sales,這是「計量」的成員,也是一個密集維度。FIX 敘述句的成員清單只包含一個稀疏成員 California,而其屬於 Market 維度。
FIX 敘述句中的現有區塊數目決定了追蹤儲存格的計算次數。在本範例中,計算會在 California 的全部現有稀疏成員組合之間循環執行。這當中的每一個組合都代表一個區塊。
計算完成之後,系統會記錄並顯示下列追蹤資訊:
Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 1) Previous value: 840.00 Dependent values: [100-20][California][Jan][Sales][Budget] = 140.00 New value: [100-10][California][Jan][Sales][Budget] = 14.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 2) Block from FIX scope: [100-30][California] Actual block used in calculation: [100-10][California] Previous value: 14.00 Dependent values: [100-20][California][Jan][Sales][Budget] = 140.00 New value: [100-10][California][Jan][Sales][Budget] = 14.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 3) Block from FIX scope: [200-10][California] Actual block used in calculation: [100-10][California] Previous value: 14.00 Dependent values: [200-20][California][Jan][Sales][Budget] = 520.00 New value: [100-10][California][Jan][Sales][Budget] = 52.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) [...calc iterations 4-7 are omitted from example...] Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 8) Block from FIX scope: [400-30][California] Actual block used in calculation: [100-10][California] Previous value: 9.00 Dependent values: [400-20][California][Jan][Sales][Budget] = 90.00 New value: [100-10][California][Jan][Sales][Budget] = 9.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; )
計算追蹤日誌提供以下有關對追蹤之儲存格的計算運作方式洞察資訊:
追蹤的儲存格會經過數次的計算,而儲存格值在每次計算過後都會以新的值覆寫 (回報的儲存格更新次數會在第 8 次停止)。
儲存格的值在計算之前為 840.00。
系統顯示了每個計算事件的相依值和新值。相依值來自 FIX 敘述句中的成員公式。
全部計算都完成之後,追蹤之儲存格的最終值會是 9,它代表產品 "400-20"->California
除以 10 的值。
計算命令檔的 91-93 行 (包含 Sales 的成員公式) 掌控更新的值。
對於每個經過循環的區塊,Sales 的計算公式為:
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10
此公式的左邊是一個稀疏成員,這會造成實際的計算區塊與最初的 FIX 區塊不同。例如,當計算循環執行 "California"->"100-20" 時,計算實際上是在 "California"->"100-10" 執行。
FIX 敘述句中的區塊與成員公式中的區塊不一致時,才會顯示 Block from FIX scope
和 Actual block used in calculation
追蹤日誌項目。您可以從這些日誌項目看出為何出現重複計算的原因,以幫助您進行計算命令檔除錯。