Sei sulla pagina 1di 39

UNIT 3

Calculation Script Architecture


Topics
When to use calc scripts
Calc Script Editor and online help
Database, dimension and member calculations
Focus calculations
Generate member lists
Boolean functions
Mathematical functions

Introducing Calc Scripts
Components of calc scripts
Calc Script Editor and online Help
Commands and functions
Using Calc Script Editor (Demo)
Using Essbase Documentation
(Demo)
Essbase manuals
Product online Help
HTML formatted documentation
Technical Reference



Exercise 3-1:
Explore Calc Script Editor and
Online Help
Exploring Essbase Calc Script
Functionality
Functional command and functions
Control flow commands (focus)
Macro functions
Conditional commands
Boolean functions
Operators
Math functions
Using Functional Commands
CALC ALL
CALC DIM
MEMBER CALC
Other CALC script commands
(CALC ALL)
Low Level data loaded
Calculating the Database Using
CALC ALL
Entire database is calculated.
Data is calculated based on outline
consolidations and member formulas.
Syntax:
CALC ALL [EXCEPT DIM(dimList)| MBR(mbrList)];
Calculating Dimensions Using
CALC DIM
Calculates a specified dimension or a list of
dimensions
Calculates first dimensions tagged as
Accounts and as Time
Calculates dense dimensions before sparse
Syntax:
CALC DIM(Accounts);
(CALC DIM)
Low Level data loaded
Calculating Members Using
Member Calc
Unary operators and equations
All database combinations for referenced
member
Syntax:
MemberName ;
Exercise 3-2:
Use Calc Functions
Focusing Calculations
FIXENDFIX
IFELSEELSEIFENDIF
CROSS DIM OPERATOR ->

Focusing Calculations Using
FixEndfix
Isolates a portion of the database
Syntax:
FIX(mbrlist)
commands;
ENDFIX
FIX (East)
Focusing Calculations Using
Conditional Statements
IFENDIF
IFELSEENDIF
IFELSEIFENDIF
IFELSEIFELSEENDIF
Focusing Calculations Using
IF...ENDIF
Performs conditional tests before performing a
calculation
Commission (IF(Sales > 200000)
Commission = Sales * .012 ;
ENDIF)
IF condition is TRUE then do statement.
IF condition is FALSE, then skip statement.
Focusing Calculations Using
ELSEIFELSE
Performs conditional test if IF statement is FALSE
Commission
(IF(Sales >= 200000)
Commission = Sales * .12;
ELSEIF (Sales >= 100000)
Commission = Sales * .098;
ELSE Commission = Sales * .05;
ENDIF)
Focusing Calculations Using Cross
Dim
A pointer to data values of specific member
combinations
Syntax:
->
Sales->Jan->Actual
Exercise 3-3:
Focus Calculations
Generating Lists Using Macro
Functions
Family
@CHILDREN
@DESCENDANTS
@SIBLING
@RELATIVE
Generation and level
@GENMBRS
@LEVMBRS


Others
@UDA
@MATCH
Generating Lists Using
@ICHILDREN
Includes the specified member and all
members in the level immediately below the
specified member
Given this outline

FIX(@ICHILDREN(West))

ENDFIX
Applies calculations to
the following:
West, California, Oregon
Generating Lists Using
@IDESCENDANTS
Includes the specified member and either all
descendants or only the descendants down to
a specified generation or level.
Given the outline

FIX(@IDESCENDANTS(WEST))

ENDFIX
returns the following:
West,California,San Diego,San
Francisco, Los Angeles, Chico,
Oregon

Generating Lists Using @UDA
Generates a list of members that have the
referenced UDA
Given the outline,

FIX(@UDA(MARKET,Small Market))

ENDFIX
applies calculations to
the following:
Connecticut, New Hampshire, and South
Generating Lists Using @MATCH
Allows you to perform a wild-card search for
members

100-10
100-20
200-10
200-30
300-20
Given the following members
FIX(@MATCH(PRODUCT,???-10))

ENDFIX
Returns the following:
100-10,200-10

Exercise 3-4:
Using Macro Functions
Testing for Values Using Boolean
Functions
@ISDESC
@ISMBR
@ISLEV
Logical connectors
Testing for Values Using
@ISDESCENDANTS
Tests member during calculation to determine
appropriate formula for payroll
Payroll
(If (@ISDESC(East) OR @ISDESC (West))
Payroll = Sales * .15;
ELSEIF (@ISDESC (Central))
Payroll = Sales * .11;
ELSE
Payroll = Sales * .10;
ENDIF)
Testing for Values Using @ISMBR
Tests to see if a member is present for a
specific calculation
Fix (East)
Commission
( If (@ISMBR(New York:
New Hampshire))
Commission =
Commission * 1.25 ;
Endif )
Endfix
Testing for Values Using @ISLEV
Tests to see if a member is present for a
specific calculation
If the calculation is
positioned on New York:
@ISLEV(Market,0)
is TRUE and
@ISLEV(Market,1)
is FALSE
Using Logical Connectors with
Boolean Functions
AND
OR
NOT
Exercise 3-5:
Using Boolean Functions
@VAR
@TRUNCATE
@MIN
@MOD
Transforming Values with Math
Functions
@VARPER
@ROUND
@MAX
@ABS
Transforming Values with @VAR
and @VARPER
@VAR
Calculates the variance
(difference) between the
values of two members

@VAR(Actual,Budget)
@VARPER
Calculates the variance
(difference) percent
between the values of two
members
VARPER(Actual,Budget)
Transforming Values with
@TRUNCATE and @ROUND
@TRUNCATE
Removes the fractional
part of an expression
and returns the integer.
Total_Sales =
@TRUNCATE(
@SUM(Direct_Sales:
Other_Sales));
@ROUND
Rounds an expression
to the nearest whole
number or to a
specifically decimal
Profit =
@ROUND("Profit_%);
Transforming Values with @MIN
and @MAX
@MIN
Returns the minimum
value among the results
of an expression
Qtr1 = @MIN(Jan:Mar) ;
@MAX
Returns the maximum
value among the results
of an expression
Qtr1 = @MAX(Jan:Mar) ;

Transforming Values with @MOD
Calculates the modulus (the remainder) of a
division operation
Factor = @MOD("Margin %", "Profit %");
Margin % = Dividend
Profit % = Divisor
Transforming Values with @ABS
@ABS returns the absolute value of an
expression.
Variance = @ABS(Actual-Budget) ;
The absolute value turns negative numbers
into positive numbers:
@ABS(-5) = 5
@ABS(+5) = 5
Exercise 3-6:
Math Functions
Test Your Understanding

Potrebbero piacerti anche