Post on 27-Dec-2015
transcript
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
• FIX…ENDFIX
• IF…ELSE…ELSEIF…ENDIF
• CROSS DIM OPERATOR ->
Focusing Calculations Using Fix…Endfix
• Isolates a portion of the database
• Syntax:FIX(mbrlist)
commands;
ENDFIX
East
South
North
West
Jan
Feb
Mar Jun
Actual
Budget
FIX (East)
Focusing Calculations Using Conditional Statements
• IF…ENDIF
• IF…ELSE…ENDIF
• IF…ELSEIF…ENDIF
• IF…ELSEIF…ELSE…ENDIF
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 ELSEIF…ELSE
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:->
BudgetActual
Sales
COGS
Margin
Margin%
Jan
Feb
Mar Jun
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))…ENDFIXApplies calculations tothe 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))…ENDFIXreturns the following:West,California,San Diego,SanFrancisco, 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”))…ENDFIXapplies calculations tothe 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 membersFIX(@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