This is a continuous post which will be updated with questions as and when they come to my mind.
Q: Can I use Dynamic calc members in calc script
- In a calculation script, you cannot calculate a dynamically calculated member or make a dynamically calculated member the target of a formula calculation
- Dynamic calc members CAN be used in scripts as source. But, using dynamically calculated members in a formula on a database outline or in a calculation script can significantly affect calculation performance. Performance is affected because Essbase interrupts the regular calculation to perform the dynamic calculation.
Q: Various places where createblockoneq can be done
Create blocks on equation can be enabled at
EAS
MAXL
ESSCMD
Calculation script
Q: What is the idea behind FIXING on dense member and having a sparse member equation on sparse member block for block creation ?
First point to be noted: Essbase numbers all indexes, whether or not a block exists for it or not. at the time of restructure. That is also a way to get the potential number of blocks figure.
Second point : A FIX is basically an OR of sets ex. FIX (A, B, C) == FIX(A OR B OR C)
A Fix statement on ONLY sparse members, searches for indexes and brings all the members for which blocks are existing in memory, that is, blocks where page file entries are present. Note that you haven't asked for any dense member explicitly.
When a sparse equation is written in calculation, only those targets for which blocks exist will be calculated. If any source is absent, it will give incorrect results.
When a dense member is fixed along with sparse members, essbase has to bring all the combinations of sparse in the fix along with the dense members in it. Since dense member is not brought individually, the whole block is brought into memory for calculation.
Sparse equation forces the calculation to take place on all possible combinations in the fix, whether or not block exists. The 'set create block on equation' forces essbase to create a block when Essbase encounters a scenario where it knows it is doing a calculation but has no placeholder for it. Hence calculation is performed and block is created.
Why only a non-constant value is required when writing equations ? Reason being CREATEBLOCKONEQ is designed to create blocks only when assigning non constant values.
You can limit the block creation by writing conditional blocks.
e.g
SET CREATEBLOCKONEQ ON
FIX(Sparse and a dense member)
Budget
(
IF(Actual->Sales != #MISSING) /*Budget block created only if actual data exists*/
Budget = Actual;
ENDIF
)
This technique is slower than DATACOPY and must be used properly.
Q: What are the two calculation modes in terms of threads ?
Q: Can I use Dynamic calc members in calc script
- In a calculation script, you cannot calculate a dynamically calculated member or make a dynamically calculated member the target of a formula calculation
- Dynamic calc members CAN be used in scripts as source. But, using dynamically calculated members in a formula on a database outline or in a calculation script can significantly affect calculation performance. Performance is affected because Essbase interrupts the regular calculation to perform the dynamic calculation.
Q: Various places where createblockoneq can be done
Create blocks on equation can be enabled at
EAS
MAXL
ESSCMD
Calculation script
Q: What is the idea behind FIXING on dense member and having a sparse member equation on sparse member block for block creation ?
First point to be noted: Essbase numbers all indexes, whether or not a block exists for it or not. at the time of restructure. That is also a way to get the potential number of blocks figure.
Second point : A FIX is basically an OR of sets ex. FIX (A, B, C) == FIX(A OR B OR C)
A Fix statement on ONLY sparse members, searches for indexes and brings all the members for which blocks are existing in memory, that is, blocks where page file entries are present. Note that you haven't asked for any dense member explicitly.
When a sparse equation is written in calculation, only those targets for which blocks exist will be calculated. If any source is absent, it will give incorrect results.
When a dense member is fixed along with sparse members, essbase has to bring all the combinations of sparse in the fix along with the dense members in it. Since dense member is not brought individually, the whole block is brought into memory for calculation.
Sparse equation forces the calculation to take place on all possible combinations in the fix, whether or not block exists. The 'set create block on equation' forces essbase to create a block when Essbase encounters a scenario where it knows it is doing a calculation but has no placeholder for it. Hence calculation is performed and block is created.
Why only a non-constant value is required when writing equations ? Reason being CREATEBLOCKONEQ is designed to create blocks only when assigning non constant values.
You can limit the block creation by writing conditional blocks.
e.g
SET CREATEBLOCKONEQ ON
FIX(Sparse and a dense member)
Budget
(
IF(Actual->Sales != #MISSING) /*Budget block created only if actual data exists*/
Budget = Actual;
ENDIF
)
This technique is slower than DATACOPY and must be used properly.
Q: What is a calculation pass:
A pass is when blocks are sent to memory for calculation. Essbase might sometimes need to calculate value of a member more than once. That means it has to bring the same blocks in memory again to calculate. Though it tries its best to do all calculation in one pass only, certain conditions might require it to do it twice, e.g. Percentage or rate or per unit price calculation at parent members.
When two dimensions are tagged as account and time, and when both are dense, Essbase calculates everything in one pass. (Provided Two pass calc is set to off and no member is set to two pass calc)
When either one of them is sparse, Essbase does calculates in two passes.
Q: What is calculation method:
Calculation mode can either be top down or bottom up. Default is bottom up. That means essbase goes on calculating members in order in which they are arranged in the outline. However, if there are complex formulas with business functions or cross dimensional operators in the script which requires parent members to be aggregated or some other member combination, essbase switches to top-down mode automatically. This can be explicitly changed using CALCMODE BLOCK/TOPDOWN option in calc scripts or in essbase.cfg file.
“Calculation Passes” on page 404"
Essbase evaluates a calc script to find complex formulas (Cross Dim operator or Top members e.g YearTotal->AllStores), in that case Essbase switches to
CALCMODE Top Down. By default it is Bottom Up.
Q: What are the two calculation modes in terms of threads ?