The Calc All command tells the Essbase to calculate the database according to the consolidations parent-child rollups and Store Data tagged member formulas that are set up in the datab
Trang 1Your Default Calc can be executed manually by selecting it from the available
choices on the screen that is displayed when you choose Execute calculation… from
the list of choices that appear after right-clicking on your database name in EAS
You can also programmatically execute your Default Calc using the appropriate
command in your MaxL script or API call
Calc All
The Calc All database calculation function can be executed in two different ways
but will perform the same function You can code the Calc All function in a database
calculation script that is either executed manually or through a program You can
also set Calc All to be your database's default calculation string.
The Calc All command tells the Essbase to calculate the database according to the
consolidations (parent-child rollups) and Store Data tagged member formulas that
are set up in the database outline and members' properties
There are occasions when you will create an Essbase database outline that is fairly
simple and straight forward with regard to parent-child relationships This database
is more than likely used for presentation and reporting purposes only and the users' access is typically Read Only With this type of arrangement, the only calculation that needs to be performed is usually after a data load or database/outline restructure
The Calc All command is perfect for this type of scenario.
When you initiate a Calc All function, Essbase attempts to determine the best order
of calculation for the database, so you must be careful to verify the results of a Calc All If your database requires complex or unusual calculations, you would be better
served using a specifically written calculation script
Trang 2Very Important!
Since this is your first calculation function that you are learning about, we should give you this tip right now The correct syntax for all calculation functional statements, in both scripts and formulas, is to end the statement with a semi-colon (;) Some statements are not required to end with a semi-colon, like conditional statements (if, else, endif), but all actionable statements are
Calculate/Aggregate dimension
With an understanding of the Calc All function, we can now be comfortable
describing the two very useful and related database calculation script functions
Where the Calc All function is used to calculate the entire database based on the
outline (consolidations and stored member formulas), the CALC DIM and AGG
functions are used to perform almost the same function with dimension level precision
The CALC DIM function performs exactly like the Calc All function in that it will
execute calculations based on the database outline and Store Data tagged member
formulas, with one huge difference In calculating, functionality is constrained to
only the database dimensions you list with this function The following is an
example of how you would code a CALC DIM statement to calculate only the
Calendar Periods dimension
To CALC DIM one dimension:
CALC DIM("Calendar Periods");
To CALC DIM more than one dimension in one command:
CALC DIM("Calendar Periods","Model Year","Market");
To make sure a specific order is followed:
CALC DIM("Market");
CALC DIM("Model Year");
CALC DIM("Calendar Periods");
The parameter section of this function can contain a comma separated list if you
wish to calculate more than one dimension
If you need to ensure a specific order of calculation for the dimensions, it is best
to code individual CALC DIM statements containing only one dimension name
in the order you need them to be calculated for each dimension
Trang 3Essbase Calc commands and functions
As discussed earlier, database calculations are very important features in the
Essbase world For some situations, you may need to write complicated calculation scripts, in other situations, they will be fairly simple In order for you to become
proficient in writing calculation scripts you need to have an understanding of some
of the predefined commands and functions that can be used in an Essbase database calculation script Let's discuss some of the more commonly used commands and
functions in detail
Data declarations
When you are writing some of the more complex calculation scripts, you will find it necessary to manipulate the data while calculating For manipulating the data, you
need to create variables
In an Essbase calc, you can create temporary variables or global variables (also called substitution variables, which are discussed in greater detail later in this chapter)
The temporary variables are only available when the calculation script is running
and they do not exist after the calculation script has completed In order to use these variables in a calculation script, you need to declare them
It is always best to declare all of the variables you will be using at the top of the calculation script
There are two types of temporary variables that can be used in an Essbase database calculation scripts:
• VAR: A variable containing only one value
• ARRAY: A one dimensional array declaration
The allowable naming convention for the VAR and ARRAY variables are similar to one another, you can use alpha characters "a through z", numbers "0 through 9", and
special characters "$ (dollar sign), # (pound sign), and _ (underscore)" Remember,
you cannot use the & (ampersand) as this is reserved for the substitution variables
Example:
VAR cRevenue;
or
VAR cRevenue = 10,000;
ARRAY arrCust["TOTAL CUSTOMER"];
Trang 4The array size would be the total number of members in this dimension.
Control flow
Control functions control the flow of the data being calculated As you will see,
some functions help select the data while some help restrict the selected data
All in all, they are used to help you calculate your data quickly and efficiently
FIX/ENDFIX
When we talked earlier about Essbase database calculation control, we meant the FIX/ ENDFIX command These are the control gate keepers of the database calculation script The FIX/ENDFIX commands are for use only in an Essbase database calculation
script When you code a member formula, the formula only applies to the member
in which it is coded, hence, there is no need for FIX/ENDFIX commands
Using Essbase's full complement of calculation functions and commands, for precise calculation purposes, it hardly matters what your outline looks like, or how it is
laid out In terms of dimension order, Sparse or Dense settings, whether or not
you have an Accounts or Time dimension, or pretty much any other way you have
your database set upto fit your own needs, the calculation script can be coded to
do exactly as you wish With the FIX/ENDFIX command, you can zero in with razor sharp precision on only the data values you wish to calculate
When you employ a FIX/ENDFIX command you are telling Essbase to select a subset
of data from the database for calculating In this way, you will not calculate too much data at any given time You also will not calculate data that you do not intend to
(the definition of Stomp-on)
What you will realize by using the FIX/ENDFIX command, besides the benefits
described above, is keeping your database calculation scripts running at
peak performance
The FIX command selects data from the database by blocks Due to this fact, and
also because you want to ensure the highest possible performance while executing
calculation scripts, it is recommended that wherever possible, you FIX only on
members that are in Sparse Dimension When you FIX on a Dense Dimension,
Essbase needs to pull all of the data blocks affected by the FIX statement into the
system's memory, thus potentially affecting performance This is because dense
members have a greater potential to populate across more blocks
Trang 5Of course, you can fix on any database member(s) you wish, and sometimes you will have no choice However, if calculation script performance becomes an issue, this is one of the first places to look to make improvements
For example:
FIX(Sparse Dimension)
IF(Dense Dimension)
Any Calculation Function;
ENDIF
ENDFIX
There is one caveat to this Essbase will only FIX on members in blocks
that have been previously created You can solve this by using the
CREATEBLOCKONEQ command in your calculation script This command
will create the necessary missing blocks for your sparse members
When you use the FIX/ENDFIX command, you are basically turning on, and then off,
the data filtering that you incorporated using the FIX/ENDFIX command in the first place In a typical calculation script, you may have many separate instances of
FIX/ENDFIX commands that enclose a wide variety of calculation functions The
FIX/ENDFIX commands can also be nested inside one another, much like nested
IF/ENDIF statements For every FIX statement, there must be a matching ENDFIX
There is one critical thing you must know about nesting FIX/ENDFIX
commands Never fix on one level of a dimension, then fix again on a
different level of that same dimension in a nested FIX command
Always attempt to FIX to the specific level you intend to for a dimension in one
FIX command The reason for this is because even though the next FIX command
is nested within the first FIX command it will still pull the entire dimension into
the calc pool for filtering In the example of a bad implementation below, the first
FIX command will select all members from the Calendar Periods dimension
The second FIX command will select all of the zero level members from the
Calendar Periods dimension This will actually result in all members of the
Calendar Periods dimension being calculated
Do not do this:
FIX("Calendar Periods")
FIX(@LEVMBRS("Calendar Periods",0))
Any Calculation Function;
ENDFIX
ENDFIX