追蹤計算
您可以使用 Essbase 計算追蹤功能獲得成員公式處理的更深入洞察分析,有助於進行除錯和精簡區塊儲存計算命令檔。您可以對相關內容 Smart View 計算追蹤啟用 CALCTRACE,或使用 SET TRACE 命令選取要追蹤的資料交集。
順利對立方體執行計算命令檔之後,您可以利用計算追蹤功能存取記錄的計算資訊。
追蹤計算不會變更計算行為。若在 Smart View 啟動計算,而且管理員對連線的伺服器啟用計算追蹤功能的話,Smart View 就會在計算執行之後,顯示一個包含詳細資訊的彈出式對話方塊。您可以將此彈出式對話方塊中的計算追蹤資訊貼到文字編輯器中。或者,您可以在 calc_trace.txt 中找到相同的資訊,該資訊位於 Essbase 的資料庫檔案目錄中。
計算的結果若不如預期,您可以利用計算追蹤資訊進行計算命令檔執行除錯。
啟用案例管理的應用程式不支援計算追蹤功能。
若要啟用計算追蹤功能,管理員必須先開啟 CALCTRACE 應用程式組態參數。應用程式啟用計算追蹤功能後,有兩種方式可充分利用此功能:
- 在 Smart View 中,您可以對單一儲存格值使用相關內容追蹤功能。
- 在 Smart View 中,將查詢工作表連線到啟用計算追蹤功能的應用程式。
- 標示要追蹤計算值的資料儲存格。
- 在 Essbase 頁籤的「資料」面板中,按一下計算按鈕,然後選取要執行的計算命令檔。您會在追蹤成員程式實際執行提示中見到標示資料儲存格的檢視點。
- 按一下啟動以執行計算命令檔。
系統將會計算命令檔中所含的完整計算範圍,但在計算期間只會追蹤標示的資料儲存格內容。
- 計算命令檔執行結束後,請查看計算結果對話方塊,瞭解標示資料儲存格計算前與計算後的結果。
標示資料儲存格在計算期間若未經修改,您將會見到儲存格未修改訊息。
- 在計算命令檔中,您可以使用 SET TRACE 計算命令來選取要追蹤的資料交集。SET TRACE 可以追蹤多個資料儲存格。此外,您還可以使用
SET TRACE mbrList(在成員清單上開啟計算追蹤) 和SET TRACE OFF(停用計算追蹤直到命令檔中遇到新的 SET TRACE) 的組合來追蹤計算命令檔的區段。若要使用 SET TRACE 命令,您必須使用 Cube Designer 、CLI calc 命令、 Essbase Web 介面中的執行計算工作或 MaxL ( 執行計算陳述式) 在 Smart View 之外執行計算命令檔。
以下的計算命令檔會在 Sample Basic 執行。此命令檔包含一個 SET TRACE 命令,要求將詳細資訊記錄在加州市場代表預算一月銷售之資料交集 (Cell) 的資料交集 (產品 SKU 編號 100-10)。
SET TRACEID "id042"
SET TRACE ("100-10", "California", "Jan", "Sales", "Budget");
FIX("California", "Budget")
"Sales" (
"100-10" = @MEMBER(@CONCATENATE(@NAME(@PARENT("Product")), "-20")) / 10;
);
ENDFIX;附註:
此外,也建議使用 SET TRACEID 命令,避免覆寫您的計算追蹤檔案。Sample Basic 有兩個稀疏維度:Product 和 Market。成員公式位於 Sales,這是「計量」的成員,也是一個密集維度。FIX 敘述句的成員清單只包含一個稀疏成員 California,而其屬於 Market 維度。
FIX 範圍內的現有區塊數目決定追蹤儲存格的計算次數。在本範例中,計算會在 California 的全部現有稀疏成員組合之間循環執行。這當中的每一個組合都代表一個區塊。
計算完成後,會將下列追蹤資訊記錄在 calc_trace_id042.txt 中並顯示:
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 的追蹤日誌項目。您可以從這些日誌項目看出為何出現重複計算的原因,以幫助您進行計算命令檔除錯。