Använd Essbase-beräkningsspårningen för att få insyn i bearbetningen av medlemsformler och finjustera beräkningsskripten för blocklagring. Aktivera CALCTRACE för kontextkänslig spårning av Smart View-beräkningar eller använd kommandot SET TRACE för att välja dataskärningspunkter att spåra.
Med beräkningsspårning kan du få åtkomst till loggad information om en beräkning, efter att beräkningsskriptet har körts mot en kub.
Spårning av en beräkning ändrar inte på något i beräkningsbeteendet. Om en beräkning startas i Smart View, och en administratör aktiverar beräkningsspårning för den anslutna servern, visar Smart View en popupdialogruta med detaljer, efter att beräkningen har körts. Beräkningsspårningens information kan klistras in från popupdialogrutan i ett textredigeringsprogram. Eller så kan du hitta samma information i calc_trace.txt
, som finns i katalogen med databasfiler i Essbase.
Beräkningsspårningsinformationen kan hjälpa dig att felsöka skriptexekveringen, om resultatet av beräkningen inte är den du förväntar dig.
Beräkningsspårning stöds inte för applikationer med scenariohantering aktiverad.
För att aktivera beräkningsspårning måste administratören först aktivera konfigurationsparametern för applikationen CALCTRACE. När beräkningsspårning har aktiverats för applikationen finns det två sätt att dra fördel av den:
Hela omfattningen av beräkningen enligt skriptet genomförs, men endast den markerade datacellens kontext spåras under beräkningen.
Om den markerade datacellen inte ändrades under beräkningen visas ett meddelande som anger att cellen inte har ändrats.
SET TRACE mbrList
(för att aktivera beräkningsspårning över en medlemslista) och SET TRACE OFF
(för att avaktivera beräkningsspårning tills ett nytt SET TRACE påträffas i skriptet). Om du vill använda kommandot SET TRACE måste du köra beräkningsskriptet utanför Smart View med kubdesignern, CLI-kommandot calc, ett Kör beräkningjobb i webbgränssnittet för Essbase eller MaxL (kör beräkning-sats).Följande beräkningsskript körs på Sample Basic. Skriptet innehåller ett SET TRACE-kommando som begär att detaljerad information loggas för dataskärningspunkten (cellen) som representerar budgeterad försäljning för januari (January), på den kaliforniska marknaden (California) för produkten med lagerenhetsnummer 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;
Obs!:
Kommandot SET TRACEID rekommenderas också för att förhindra att filen för beräkningsspårning skrivs över.Sample Basic har två glesa dimensioner, Product och Market. Medlemsformeln finns i Sales, en medlem i Measures, som är en tät dimension. FIX-satsens medlemslista innehåller bara en gles medlem, California, som tillhör dimensionen Market.
Antalet befintliga block i omfattningen FIX anger antalet gånger den spårade cellen beräknas. I det här exemplet går beräkningen igenom alla befintliga gles medlem-kombinationer av California. Var och en av dessa kombinationer motsvarar ett block.
När beräkningen har slutförts loggas och visas följande spårningsinformation i 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; )
Beräkningsspårningen ger följande insikter om hur beräkningen har fungerat, för den cell som har spårats:
Den spårade cellen har beräknats flera gånger och cellvärdet skrevs varje gång över med det nya värdet (det rapporterade antalet uppdateringar av cellen slutar vid 8).
Värdet för den cellen, före beräkning, var 840,00.
För varje beräkningsförekomst visas beroende värden och nya värden. Beroende värden kommer från medlemsformeln i FIX-satsen.
Det slutliga värdet för den spårade cellen, efter att hela beräkningen har slutförts, är 9, men det representerar värdet av produkten "400-20"->California
dividerad med 10.
Raderna 91-93 i beräkningsskriptet, som innehåller en medlemsformel för Sales, är ansvarig för de uppdaterade värdena.
För varje block som gås igenom beräknas Sales med följande formel:
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10
Formeln innehåller en gles medlem på vänster sida, som kan orsaka att det faktiska beräkningsblocket är annorlunda än det ursprungliga FIX-blocket. När till exempel beräkningen cykliskt går igenom "California"->"100-20" görs beräkningarna faktiskt i "California"->"100-10".
Spårningsloggposterna med namnen Block from FIX scope
och Actual block used in calculation
skrivs bara ut om det finns en avvikelse mellan blocken i FIX-satsen och blocket som är representerat i medlemsformeln. Dessa loggposter kan ge indikationer på varför det finns dubblettberäkningar, vilket hjälper dig att felsöka dina beräkningsskript.