Gebruik Essbase berekeningstracering om inzicht te krijgen in de verwerking van onderdeelformules, zodat u fouten kunt opsporen in uw rekenscripts en de rekenscripts kunt verfijnen. Activeer CALCTRACE voor contextgevoelige Smart View berekeningstracering of gebruik de opdracht SET TRACE om de te traceren gegevensdoorsneden te selecteren.
Met berekeningstracering hebt u toegang tot de gelogde gegevens van een berekening nadat het berekeningsscript voor een kubus is uitgevoerd.
Door het traceren van een berekening wijzigt het gedrag van de berekening niet. Als een berekening wordt gestart in Smart View terwijl door een beheerder berekeningstracering is geactiveerd voor de verbonden server, wordt in Smart View een pop-updialoogvenster met details geopend nadat de berekening is uitgevoerd. De gegevens van de berekeningstracering kunnen vanuit het pop-updialoogvenster in een teksteditor worden geplakt. Dezelfde gegevens vindt u ook in calc_trace.txt
dat zich in de directory met databasebestanden in Essbase bevindt.
Met behulp van de gegevens van de berekeningstracering kunt u de uitvoering van berekeningsscripts debuggen wanneer de berekening onverwachte resultaten oplevert.
Berekeningstracering wordt niet ondersteund in applicaties waarvoor scenariobeheer is geactiveerd.
Als u berekeningstracering wilt activeren, moet de beheerder eerst de applicatieconfiguratieparameter CALCTRACE inschakelen. Nadat berekeningstracering is geactiveerd voor uw applicatie, kunt u daar op twee manieren gebruik van maken:
Het volledige bereik van de berekening in het script wordt berekend, maar alleen de context van de gemarkeerde gegevenscel wordt tijdens de berekening getraceerd.
Als de gemarkeerde gegevenscel niet is gewijzigd tijdens de berekening, ziet u een bericht dat de cel niet is gewijzigd.
SET TRACE mbrList
(om berekeningstracering voor een onderdelenlijst in te schakelen) en SET TRACE OFF
(om berekeningstracering uit te schakelen tot de volgende SET TRACE in het script). Als u de opdracht SET TRACE wilt gebruiken, moet u het berekeningsscript buiten Smart View uitvoeren met behulp van Cube Designer, de CLI calc-opdracht, een Berekening uitvoeren-taak in de Essbase webinterface of MaxL (berekening uitvoeren-statement).Het volgende berekeningsscript wordt uitgevoerd in Sample Basic. Het script bevat een SET TRACE-opdracht waarmee wordt aangegeven dat gedetailleerde gegevens moeten worden gelogd voor de gegevensdoorsnede (cel) die de gebudgetteerde verkoop van januari voor de markt 'California' weergeeft voor SKU-productnummer 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;
Opmerking:
De SET TRACEID-opdracht wordt ook aanbevolen om te voorkomen dat uw berekeningstraceringsbestand wordt overschreven.Sample Basic heeft twee schaarsheiddimensies: 'Product' en 'Market'. De lidformule geldt voor 'Sales', een lid van de dimensie 'Measures'. Dit is een dichte dimensie. De lijst met onderdelen van het FIX-statement bevat slechts één schaarsheidonderdeel, namelijk 'California', dat tot de dimensie 'Market' behoort.
Het aantal bestaande blokken in het FIX-bereik bepaalt het aantal keren dat de getraceerde cel wordt berekend. In dit voorbeeld doorloopt de berekening alle bestaande schaarsheidonderdeelcombinaties van 'California'. Elk van deze combinaties geeft een blok weer.
Nadat de berekening is voltooid, worden de volgende traceringsgegevens gelogd en weergegeven in 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; )
Het log van de berekeningstracering biedt de volgende insights over de werking van de berekening in de getraceerde cel:
De getraceerde cel is verschillende keren berekend, en de celwaarde werd iedere keer overschreven met de nieuwe waarde (het aantal gerapporteerde malen dat de cel is bijgewerkt, stopt bij 8).
Vóór de berekening was de waarde van de cel '840,00'.
Voor elke uitvoering van de berekening worden afhankelijke waarden en nieuwe waarden getoond. Afhankelijke waarden zijn afkomstig uit de onderdeelformule in het FIX-statement.
De uiteindelijke waarde van de gegevenscel nadat alle berekeningen zijn uitgevoerd is 9, maar dit vertegenwoordigt de waarde van het product "400-20"->California
gedeeld door 10.
De regels 91-93 van het berekeningsscript, die een onderdeelformule voor 'Sales' bevatten, zijn verantwoordelijk voor de bijgewerkte waarden.
Bij elk van de blokken dat wordt doorlopen, wordt 'Sales' berekend met de volgende formule:
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10
De formule bevat een schaarsheidonderdeel aan de linkerzijde waardoor het werkelijke berekeningsblok mogelijk verschilt van het eerste FIX-blok. Wanneer de berekening bijvoorbeeld "California"->"100-20" doorloopt, worden de berekeningen daadwerkelijk uitgevoerd in "California"->"100-10".
De traceringsloggegevens met de titel Block from FIX scope
(blok uit FIX-bereik) en Actual block used in calculation
(werkelijk gebruikt blok in berekening) worden alleen afgedrukt als er een verschil bestaat tussen de blokken in het FIX-statement en het blok dat wordt weergegeven in de lidformule. Deze loggegevens kunnen aangeven waarom er dubbele berekeningen zijn zodat u uw berekeningsscripts kunt debuggen.