You are on page 1of 55

A walk around (& through)

the block
Essbase BSO & Calculation Scripts for Everyone!
Rich Schoustra, Managed Services
Practice Lead, Principle
ADI Strategies, Inc.
Rich Schoustra
Managed Services Practice Lead, Principal, ADI
Strategies, Inc.
Hyperion Consulting (1996)
Training (2000-2002)
Project Management/Consulting

You!
VERY Important!
Introduction
Why learn about Dense & Sparse
Assigning Dense & Sparse Storage type
Dense Defined
Sparse Defined
Essbase is a databasesort of
Useful Database Statistics
A simple Calc Script
Why is it important to know:
What makes blocks fill up?
What makes blocks multiply?
What makes blocks grow (or shrink)?
Agenda
Become a blockhead
Basis for writing efficient calculation scripts
Basis for writing calculation scripts that work (well)
Helps in understanding report development
Helps dictate data load design
Helps in architecting overall Hyperion Solution
Including multiple Plan Types
Multiple Essbase reporting cubes
ASO / BSO hybrid architected solutions
Designing Partition definitions
Helps in understanding Essbased Hyperion Products
Hyperion Planning
Hyperion Profitability and Cost Management (HPCM)


Why learn about Dense & Sparse
How to define Dense/Sparse settings
Dense defines the Block
Sparse defines the Address
Calculating Block Size
Calculating Number of Blocks
Calculating Dense vs. Calculating Sparse
Identifying (unique) Blocks in retrievals & Extracts
Important Database Statistics for Dense & Sparse
Dynamic Calc on Dense but not on Sparse
Implied Shares
Hourglass




What you will learn
Quick overview of the Sample.Basic (modified!) Essbase Database
Hyperions version of Hello World!




Sample.Basic
Dont play with Matches

How to set Dense and Sparse
How to set Dense and Sparse
Hyperion Planning: As easy as
How to set Dense and Sparse
Oracle Essbase: As easy as
Dense Dimension Storage Property Defined
Designating which dimensions have the Dense storage property
means you have just defined and pre-created a Multi-dimensional
Array.
Which brings us to.
Spreadsheets & Databases . . . a digression
(Essbase is a Database, sort of. Absolutely!)
Spreadsheets store (numerical) data in arrays with labels to
relate/define the data Labels to create CONTEXT
Spreadsheets & Databases . . . a digression.
Relational Databases store data in related tables
with indices and keys to relate the data
Oracle Essbase is a Database, but
In computing, an Array is a construct for storing data and is
declared in most programming languages as an X by Y by Z by
n multidimensional Matrix.
Which brings us back to.
Designating which dimensions have the Dense storage property
means you have just defined and pre-created a Multi-dimensional
Array (for storing your datanumbers).
1 X 2 Array
2 X 3 Array
3 X 3 X 2
Array (3D)
3 X 3 X 2
Array (2D)
Dense Dimension Storage Property Defines The Block
(orthe multidimensional array )
(stored) Members in Dense Dimension-1 (axis-A)
X (stored) Members in Dense Dimension-2 (axis-B)
X (stored) Members in Dense Dimension-n (axis-n)
X 8(bytes) = Bock Size (Array Size)

Sparse Dimension Storage Property Defines
POTENTIAL addresses (index-pointers) to Blocks
= Potential Number of Blocks
(stored) Members in Sparse Dimension-1
X (stored) Members in Sparse Dimension-2
X (stored) Members in Sparse Dimension-n
= Potential Number of Blocks

Sparse Dimension Storage Property Defines
POTENTIAL addresses (index-pointers) to Blocks
= Potential Number of Blocks
The Sample Basic Model 1 Dense Dimension
and some useful Database Statistics
1 Dense Dimension
with 8 stored members
4 Sparse Dimensions
with 4, 3, 19, 25 stored
Members
The Sample Basic Model 1 Dense Dimension
Dimensions: Members Stored. Stored Member Count excludes members:
Tagged to calculate Dynamically
Tagged as Label Only
Tagged as (Explicit) Shared Member
Implied Shared Member
Attribute Dimensions Members


The Sample Basic Model 1 Dense Dimension
*Implied Share:
Technically: when a Parent Member has only 1 child member (profit in this case),
it will share the same data value as the single child and Essbase will not allocate
storage or an array cell for this value.

The Sample Basic Model 4 Sparse Dimensions
Sparse Dimension Storage Type makes up the Address or Pointer to the Block
(Array). The total Potential number of addresses or Unique Blocks is:

(4 stored Year Dimension Members) *Attribute Dimensions
X (3 stored Scenario Dimension Members) are not included
X (19 stored Product Dimension Members)
X (25 stored Market Dimension Members) = 5,700 Potential unique blocks


The Sample Basic Model 4 Sparse Dimensions
The Sample Basic Model 4 Sparse Dimensions
The Sample Basic Model 1 Dense Dimension
Statistics: Block Size: Number of Stored Dense Dimension Members X 8 (Bytes)
defines the Block (or Array) Size

DENSE

SPARSE

The Sample Basic Model 1 Dense Dimension
Index Cache is amount of memory available to load the index values into memory
from the ess0000n.IND file(s). The *.ind files contain all of the unique block
address pointers the unique (complete) Sparse member intersections.

DENSE

SPARSE

Data Cache is amount of memory available to load the (uncompressed) blocks into
memory from the ess0000n.PAG file(s). The *.PAG files contain all of the blocks.

The Sample Basic Model 1 Dense Dimension
ess00001.IND This file contains all of the unique block address pointers the
unique (complete) Sparse member intersections that exist (have been loaded to
Essbase. This file can usually fit in memory (index cache) for rapid access to
pull (point to) blocks in memory or on disk to be pulled into memory

DENSE
(the Blocks)

SPARSE
(the Index)

ess00001.PAG This file (or files) contains the compressed blocks on disk. Blocks
are called into memory (data cache) based on complete sparse intersection data
requests (e.g. Smart View refreshes, Planning Web Forms, Running Calculation
Scripts and Business Rules.

WOW! The Amazing & Fantastic:
Block-Size-Potential-Number-
Of-Blocks-Hyperion-Essbase-
Database-Sizing-Configurator!
2-Dense Dimensions Model . Statistics
2 Dense Dimensions. Load 1 Block
2 Dense Dimensions. Calc All;
2 Dense Dimensions. Calc All;
Calculating [Measures] in the block (Dense #1)
Calc All does just that. It Calculates All Blocks in the data base (Dense), and
Aggregates (Sparse) all level 0 blocks to upper level blocks if they exist

Block [Actual], [100-10], [New York]
Context for 645:
Dense Context 1 = Sales
Dense Context 2 = Feb
Calculating [Year] in the block (Dense #2)
Block [Actual], [100-10], [New York]
Calculating (Aggregating) [Scenario] (Sparse #1)
Block [Actual], [100-10], [New York]
Calculating (Aggregating) [Product] (Sparse #2)
Block [Actual], [100-10], [New York]
Calculating (Aggregating) [Product] (Sparse #2)
ess00001.PAG
BOOM! 2 new (upper level) Blocks:
[Actual], [100], [New York]
[Actual], [Product], [New York]
Calculating (Aggregating) [Market] (Sparse #3)
Block [Actual], [100-10], [New York]
Calculating (Aggregating) [Region] (Sparse #3)
Set Msg Detail;
Calculating (Aggregating) [Region] (Sparse #3)
ess00001.PAG
BOOM! 6 new (upper level) Blocks:
1. [Actual], [100-10], [East]
2. [Actual], [100], [East]
3. [Actual], [Product], [East]
4. [Actual], [100-10], [Market]
5. [Actual], [100], [Market]
6. [Actual], [Product], [Market]
Dense(Calculation)
Fill up the blocks

Sparse(Calculation)
Creates new
(Aggregated) Blocks
[Actual]->[Cola]->
[New York]
[Actual]->[Colas]->
[New York]
[Actual]->[Product]->
[New York]
[Actual]->[Cola]->
[East]
[Actual]->[Colas]->
[East]
[Actual]->[Cola]->
[Market]
[Actual]->[Colas]->
[Market]
[Actual]->[Product]->
[Market]
[Actual]->[Product]->
[East]
1 Block becomes 8 aggregated
[upper level] Blocks
Simple Calculation
REQUIREMENT:
Load the Database with Actual data (25 level 0 Blocks)
Calculate the Database : 81 Upper Level Blocks =106 Total Blocks
Pre-Populate the Budget with Actual data [DATACOPY Actual to Budget; ]
212 Total Blocks
Assumption. Sales will be 10% higher in the Budget [If it is an Eastern Region
Member](Child of East)
Using IF /
ENDIF

& FIX /
ENDFIX
Simple Calculation
Simple Calculation
This Calculation will iterate through all 106[Budget] Blocks,
asking the question each of the 106 times:
Are you [Block-in-Memory] a child of the Parent
Member [East] in the [Market] Dimension?
If you are, then Your Sales are now = to 1.1 times
your current Sales!
If you are not a child of the Parent Member [East]
in the [Market] Dimension then get outta here! Back
to disk with you!
Blocks Before Calculation Blocks After Calculation
Simple Calculation
Just need
to calculate
these 12
Blocks
Not these 94
Blocks
94 =106-12

[non-children-
of-East]
Blocks
Simple Calculation
Just need to
calculate these
12 Blocks
Change IF logic
to FIX
and ignore
all the other
blocks
Generalization regarding IF & FIX
Sometimes* It depends. Usually after FIXing on other
groups or groupings of SPARSE member intersections.
Rarely** It depends. Also after Fixing down on
members. There are other challenges with associated
with Ifing on Sparse dimension members.
Dynamic Calculation Storage Option
Dynamic Calculation:
Use on Aggregating DENSE Dimension Parent
Members wherever possible
Use (with caution) on SPARSE Dimension Parent
members: Watch out for:
Degradation of Retrieval & Calculation
performance
Unexpected results
Dynamic Calculation Storage Option
Why Dynamic Calc on Dense?
Smaller Block Size
Calculation occurs IN THE block
Dynamic Calculation Storage Option
Why Not Dynamic Calc on Sparse?
Need Multiple Blocks in Memory to
derive Virtual Blocks in Memory
[Actual]->[Cola]->
[New York]
[Actual]->[Colas]->
[New York]
[Actual]->[Product]->
[New York]
Data Load. Extract Layout Tip
SORT ON SPARSE
Dimensions First and
DENSE Dimensions
Last:
Avoids excessive I/O
(Reads / Writes from
diskspecifically the
ess00001.PAG file)
Prevents unnecessary
Fragmentation of the
ess00001.PAG file, or
files)
GOOD! BAD!
The Hourglass.
The Hourglass
For DENSE Dimension Members this (usually) occurs naturally since [Accounts]
usually has the most (Dense) members, followed by Time, Scenario, and sometimes
another DENSE dimension. The Top part of the hourglass doesnt really matter for
calculation performanceUser Presentation (how the members naturally appear in
SmartView is more important.
For SPARSE dimensions, the aggregations do occur more efficiently if the dimensions
with fewest aggregations (not members!) are aggregated 1
st
, followed by next with
most aggregations, etc.
Wheres Waldo?...
If Waldo is [SPARSE] or [DENSE] can you spot Waldo
In SmartView Retrievals?
Calculation Scripts?
Data Extracts?
Substitution Variable Assignment Grids?
In a plane? On a Train? .
Whats Next?
Where to go from here
Check out some of the more technical sessions here at KScope
Use your own environment and look at and watch the Statistics we talked about
Open up those Calculation Scripts that may have seemed daunting
On DEV, play around with Calculation Scripts and make small adjustments
HAVE FUN!
Contact: Rich Schoustra: rschoustra@adistrategies.com

Join Rich Schoustra:
Managing Hyperion: A Success Guide for CIOs, CFOs, Finance,
Accounting, and IT Managers
When: Jun 24, 2014, Session 7, 11:15 am 12:15 pm

Join Sumit Deo:
EPMA Tips and Tricks: Lessons in Metadata and Data Management
When: Jun 25, 2014, Session 13, 11:15 am 12:15 pm

Join Eric Helmer:
Saas? Cloud? Exalytics? On-premise?
Exploring Oracle EPM Deployment Options
When: Jun 25, 2014, Session 15, 3:15 pm - 4:15 pm




For more information
T H A N K Y O U
Rich Schoustra
Hyperion Managed Services
Practice Lead, Principal
rschoustra@adistrategies.com

You might also like