Intelligent Calculation and Data Block Status

With Intelligent Calculation enabled, Essbase checks the update status of the blocks in a database, and calculates only "dirty" blocks and their dependent parents. When disabled, Essbase calculates all data blocks in the calculation scope, regardless of whether they are marked as clean or dirty.

Blocks Marked "Clean"

Essbase marks data blocks as clean in these types of calculations:

  • A full calculation (CALC ALL) of a database (the default calculation).

  • A calculation script that calculates all the dimensions in one CALC DIM statement.

    For example, the following calculation script calculates all members in the Sample Basic database:

    CALC DIM(Measures, Product, Market, Year, Scenario);

    Compare this calculation script to a calculation script that calculates all the members with two CALC DIM statements:

    CALC DIM(Measures, Product);
    CALC DIM(Market, Year, Scenario);

Using two CALC DIM statements causes Essbase to do at least two calculation passes through the database. In this calculation, Essbase does not, by default, mark the data blocks as clean. Because Intelligent Calculation depends on accurate clean and dirty status, you must manage these markers carefully.

Essbase marks calculated data blocks as clean only in the situations described above, unless you use the SET CLEARUPDATESTATUS command in a calculation script. See The SET CLEARUPDATESTATUS Command.

Blocks Marked "Dirty"

Essbase marks a data block as dirty in these situations:

  • Calculating the data block for a partial calculation of the database only if SET CLEARUPDATESTATUS AFTER is not part of the partial calculation statement in the calculation script

  • Loading data into the data block

  • Restructuring the database (for example, by adding a member to a dense dimension)

  • Copying data to the data block; for example, using DATACOPY

Maintenance of Clean / Dirty Status

To use Intelligent Calculation when calculating a subset of a database or performing multiple calculation passes, consider carefully the implications of how Essbase marks data blocks as clean, to ensure that Essbase recalculates the database as efficiently as possible.

For example, when you calculate a subset of a database, the newly calculated data blocks are not marked as clean by default. You can ensure that the newly calculated blocks are marked as clean by using the SET CLEARUPDATESTATUS AFTER command in a calculation script. Before creating the calculation script, see The SET CLEARUPDATESTATUS Command.