Uncategorized

Essbase BSO, understanding dense and sparse dimensions

An Essbase application contains two types of data: the input data, that are loaded from relational tables or text files during database load, and calculated data, that are calculated starting from the input data during the database calculation. Both types of data are stored in cells of a data structure called a data block.

For each unique combination of sparse dimension members, Essbase creates:

  • a data block that contains data of all combinations of members in the dense dimensions.
  • an index entry for that block.

In this sample we have two sparse dimensions (Market and Product) and three dense dimensions (Scenario, Time, Accounts):

dense and sparse dimensions
Sparse and Dense dimensions

For each data block, Essbase associates a unique number, called block number, that determines the order of calculation of the data blocks. The block number (and then the order of data block calculation) is assigned starting with the first member in the outline:

sample_outline
Sample sparse dimensions outline

Essbase creates 19 block number starting from zero (according the members order of the Product dimension) for the “New York” member of the Market dimension:

block1
Block number for member “New York”

Then another 19 for the Massachusetts member of the Market dimension, and so on …

block2
Block number for member “Massachussets”

And for every block number an index entry:

index_entry
Index entry for every block number

Note that Essbase creates a data block only if there exists at least one single cell of the block that is not empty (which contains a data value). Otherwise, the block number is stored for a possible future creation of the associated block.

Essbase does not create a block number for shared members: shared members are only pointers to relative stored member.

Leave a Reply