Berekeningen traceren

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:

  • In Smart View kunt u contextgevoelige tracering gebruiken voor één celwaarde.
    1. In Smart View kunt u een zoekvraagblad koppelen aan de applicatie waarvoor u berekeningstracering hebt geactiveerd.
    2. Markeer een gegevenscel waarvan u de berekende waarde wilt traceren.
    3. Klik in het deelvenster 'Gegevens' van het tabblad 'Essbase' op de knop Berekenen en selecteer een berekeningsscript om uit te voeren. U ziet het point-of-view van de gemarkeerde gegevenscel in de runtimeprompts van het getraceerde onderdeel.
    4. Klik op Opstarten om het berekeningsscript uit te voeren.

      Het volledige bereik van de berekening in het script wordt berekend, maar alleen de context van de gemarkeerde gegevenscel wordt tijdens de berekening getraceerd.

    5. Onderzoek aan het einde van het berekeningsscript het dialoogvenster Berekeningsresultaat, waar de resultaten voor en na de berekening voor de gemarkeerde gegevenscel worden weergegeven.

      Als de gemarkeerde gegevenscel niet is gewijzigd tijdens de berekening, ziet u een bericht dat de cel niet is gewijzigd.

  • U kunt de berekeningsopdracht SET TRACE in berekeningsscripts gebruiken om te traceren gegevensdoorsneden te selecteren. Met SET TRACE kunt u meerdere gegevenscellen traceren. U kunt ook secties van berekeningsscripts traceren met behulp van een combinatie van 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.