You are on page 1of 78

Workarounds for What the

Essbase Developers Forgot!

Edward Roske
eroske@interrel.com
BLOG: Looksmarter.blogspot.com
WEBSITE: www.interrel.com
TWITTER: ERoske
About interRel
• 2008 Oracle Titan Award winner - EPM Solution of the year
• 18 presentations at Collaborate 2009, 14 presentations at
Kaleidoscope, 6 at OpenWorld 2008
• 2008 Oracle Excellence Award winner with Pearson Education
• One of the fastest growing companies in the world (Inc. Mag., ‟08)
• We have two of the three Hyperion Oracle ACE Directors in the
world
• Founding Hyperion Platinum Partner; now Oracle Certified Partner
• Focused exclusively on Oracle Hyperion EPM software
• Consulting
• Training
• Infrastructure and Installation
• Support
• Software sales

2
• 5 Hyperion Books Available:
• Essbase (7): Complete Guide
• Essbase System 9: Complete Guide
• Essbase System 9: End User Guide
• Smart View 11: End User Guide
• Essbase 11: Admin Guide

• eBooks available on Amazon Kindle


• Coming Soon
• Hyperion Planning for End Users
(September)
• Hyperion Planning for Admins

• To order, check out www.lulu.com

3 Copyright © 2007, Hyperion. All rights reserved.


Disclaimer

• These slides represent the work and opinions of the presenter


and do not constitute official positions of Oracle or any other
organization.
• This material has not been peer reviewed and is presented here
with the permission of the presenter.
• This material should not be reproduced without the written
permission of interRel Consulting.

• We will send you a copy of the slides shortly after the


presentation.
Agenda

• Converting #Missing to Values in Excel


• Essbase Workarounds with Data Load & Dimension Build Rules
• Essbase Workarounds with Substitution Variables
• Planning Metadata Filters
• Drill Through to Planning using Studio
• Native Essbase Security
• Other Miscellaneous Tips (if we have time)
• Questions and Answers
Workarounds for
Converting #Missing to Zeros in Excel
Excel Trick

• If you try to do something like subtract #missing (or another non


numeric value), you can get the silly #val in your calculated cell.

• To get around this, you can modify the formula. Just add N()
around the cell references.
Excel Trick

=N(C2)

Result
Excel Trick

• Now, what if we wanted to have Essbase return a numeric zero


instead of a text zero

• We all know how to do the text zero right?

• Simply go into the Add-In and under OPTIONS do this:


Excel Trick
Excel Trick

• Problem is now when we do an Essbase RETRIEVE, our


spreadsheet has a text zero where there was a #MISSING
Excel Trick

• We want a numeric zero to be returned from Essbase

• This is easy!

• We simply go into the Add-In and under OPTIONS place


parentheses around the zero like this:
Excel Trick
Excel Trick

• Now we have numeric zeros in our spreadsheet


Excel Trick

• Disclaimer – This should not be used if you are sending


data back to Essbase

• It will cause the database size to grow since you would


now be storing data instead of #MISSING
Workarounds for
Data Load & Dimension Build Rules
Rules – Quotation Marks

• Watch out for “ in data files


• The load will break the data into multiple columns if it
encounters unbalanced quotes
– Like if you had a product called 12” diamond necklace

• Rules will also remove paired quotes around words


• “New York” will be evaluated as New York
Rules – Quotation Marks cont.

• What if you‟re using a dim build rule to add a formula like


this:
=“New York” + Oregon;

• Putting that in a column will not work.


• The key is getting Essbase to treat the quotes as
characters
• Do this by putting a \ before each quote:
=\“New York\” + Oregon;
Rules – Direct Editing

• It‟s possible to open a rule in an editor that preserves all


characters
– Hexadecimal editors
– Wordpad.exe
• Here‟s Sample.Basic.Act1 rule in Wordpad:
Rules – Direct Editing cont.

• Note that most of it is gibberish


• But also notice that plain text in the original rule comes
across as plain text in the editor
Rules – Direct Editing cont.

• If you keep the characters the same, you can change the
RUL file in the editor, save it, and run it.
• This rule has Actual in the header since all data in the file
is actual. What if we want it to load budgets instead?
• Let‟s change Actual to Budget at the end of line 3
Free-form Data Loading

• Free-form data loading is an easy-to-use process if the


following characteristics are recognized:
• Data file is loaded as is without any explicit description of its
contents
• Data must be in natural order for Essbase
• Any valid dimension/member/alias name combination is
acceptable
• Data is read according to the member names Essbase finds
• Free-form data load is optimized for fast loading
Free-form File Requirements

• Each data point tagged with a member from each


dimension
• Data scanned from top of file and from left to right
• Each item separated
• Some types of member names or aliases with
double quotes
• Members from same dimension in same column or
row
• Members from different dimensions together only on
page header
Free-form File Requirements

Markets Products Scenario Year Measures

AASt Cola Actual Jan Sales $10


AASt Cola Actual Feb Sales $21
AASt Cola Actual Mar Sales $30
AASt Cola Actual Apr Sales $35
AASt Cola Actual May Sales $40
AASt Cola Actual Jun Sales $45
AASt Cola Actual Jan Marketing $8
AASt Cola Actual Feb Marketing $16
AASt Cola Actual Mar Marketing $20
Free-form Data Loading, Example 2

Measures Markets Products Year Scenario

East “100-10” Actual


Jan Feb Mar Apr May Jun
Sales 10 21 30 35 40 45
Marketing 8 16 20 33 38 40
Load Data via Free Form

1. Select Actions / Load data for “dbname”


2. The Load Data window will open
Load Data via Free Form

3. Specify SQL or data files


4. Select Find Data File and navigate to the data file
5. DO NOT select Find Rules File; NO RULES FILE is
necessary for a free form load
6. Click OK
Free-form Purpose

• So, why would I bother?

• Because a free-form data load is ALWAYS faster than


the equivalent load with the rule

• It‟s more flexible than a data load rule

• You just have to get it right, because one error will


stop the whole process
Replacement of empty values in a load rule

• Let‟s say we have a data file that looks like this:

Notice that we have some


empty values in the product
column or Field1
Replacement of empty values in a load rule

• Create a text column with an obscure character or word


(like a ~ or ZZZZZ)
Replacement of empty values in a load rule

• Join the text column to the problem column


Replacement of empty values in a load rule

• In the field replacements replace the special character with


a default value like NoProduct selecting replace whole
word only
Replacement of empty values in a load rule

• Now we have:
Replacement of empty values in a load rule

• Next replace ZZZZZ with nothing and do not select Match


Whole Word

That Does
it!
Essbase Workarounds using
Substitution Variables
Substitution Variables – How They Work

• A substitution variable is set up by an administrator to


simplify maintenance of things like calc scripts and retrieves
• The question I always get is: what can I put in a variable?
• Are these valid in a substitution variable?
1. Jan
2. “Jan”
3. Jan:Feb
4. “Jan:Feb”
5. Jan,Feb
6. “Jan”,”Feb”
• All can be put in a variable, but you wouldn‟t want to do #4
Substitution Variables – How They Work cont

• Before a calc script (or whatever it is) runs, it replaces the


variable with the value the variable is saved to. It then
validates and runs the calc script (or whatever it is).

• Do you need double-quotes around a variable value like


Actual->Sales?
• No, because you wouldn't normally put the term
"Actual->Sales" in double-quotes in a calc script
• You‟d just say Actual->Sales

• In other words, put quotes around something in a variable if


you‟d want quotes around them in a calc script (or whatever)
Substitution Variables – The Fun Part

• You can actually set a variable to any darned thing


you want.
• Check out this substitution variable:

&ClrCommand = CLEARDATA Actual->Feb->Sales->Cola->Texas;


Substitution Variables – Calc Lines

• Yes, that's a full line from a calc script (including a


semi-colon).
• Watch how you can call it and then run it in a calc
script:

• And yes, it actually runs.


Substitution Variables – Whole Scripts

• You can even take this a step further and put a


series of lines into a script like this:

• And then call it like this:

• And then call it like this:


Substitution Variables – What‟s The Point?

• You can put the common lines from all of your calc scripts
into a substitution variable and call them from all your scripts

• No more repeating “SET UpdateCalc Off;” at the top of every


script
• Just put &Header at the top of each script
• And if your header needs change, just change the variable

• Basically, you‟re writing your own macros… using


variables
Workaround for Filtering Metadata in
Planning (using Essbase)
Planning Metadata Filters from Planning Web

• Planning will filter the dimensions within the Planning


web client, showing users only the members for which
they have read or write access
• Instead of seeing the full Entity
hierarchy (for example):
Planning Metadata Filters from Planning Web

• They see the hierarchy and members where they have


read or write (e.g. Latin America entities):
Planning Metadata Filters from Reporting

• Great in the Planning


web client but what
about reporting in Smart
View or other reporting
tools?
• The problem…
• Users see the complete
dimension, even those
members with “none”
access
• Note they receive a
#NoAccess message if
they try to retrieve data
for members with None
access
The Solution

• So what if you want to filter the metadata in reporting as


well as Planning?

• Copy the Read filter that Planning creates in Essbase


• Change the copied read filter to “metaread”
• Metaread security takes precedence over Read so you
can leave the Planning read filter
• Metaread Essbase filters will filter both dimensions and
data for end users (just like the Planning web)

• Is that it? Nope.


• Planning refreshes will wipe out the new Metaread filters
The Solution – Part 2

• You need to create a process / script that:


1) Refresh Planning dimensions and security
2) Apply METAREAD access to those filters

• In more detail…
1. Refreshes Planning through CubeRefresh.cmd
2. Writes the filters to disk via MaxL
3. Reads them into memory in VBScript
4. Programmatically generates MaxL code to apply a
METAREAD to each of those filters
5. Run that new MaxL script
For more info/code samples, see interRel‟s Cameron Lackpour‟s blog: http://camerons-blog-for-
essbase-hackers.blogspot.com/2009/07/fixing-plannings-filters.html
Workaround - Drill Through to Detail
from Planning Using Essbase Studio
Essbase Studio

• Next generation tool for Essbase application building


and administration
• Graphical modeling environment – ease of use
• Integrate Cube creation capabilities of EIS and EAS
• Promote reuse and consistency
• Manage change through impact analysis and artifact lineage
• Update data source administration and access
Essbase Studio 11.1.1

• Create, deploy and maintain cubes


Does anyone see
• Unifies many sources for modeling Planning listed
• RDB here?
• OBIEE
• Flat Files
• EPMA Dimension Library
• Support for new Essbase 11 features (Varying attributes, Text
and date lists)
• Catalog browsing and exploring
• Manage change through impact analysis and artifact lineage
• Graphic modeling environment
• Drill Through
• Role based security
• Improvements in architecture (parallel loads, optimized for
Teradata TPT API)
Essbase Studio Components

Data source definitions

Mini schemas

Hierarchies

Logical elements

Measures

Cube schemas

Cube deployments

Drill through reports

51
Essbase Studio - Layout
Metadata Navigator – A tree view of
the metadata repository
Minischema tab in the Data Source
Navigator

A dimension element that is bound


Data Sources tab in the Data Source
to a physical column in the database
Navigator
Folders created by user to organize
contents in the repository

A dimension element of that is of a


“measure” type
Thumbnail navigator to obtain a
miniaturized view of the minischem

Cube
Hierarchy schema
- A higher – Ametadata
level higher level
element metadata element
that has been that from
created consists of
hierarchies
base dimensional and measures.
elements

Essbase Model – A cube schema


that has all the properties necessary
to create an Essbase application
Create and Manage an Essbase Cube in Studio

1. Create data source


2. Create mini-schema (similar to metamodel in EIS)
3. Create hierarchies
4. Create cube schema
• Add hierarchies
5. Create Essbase model
• All Essbase properties under Essbase Model properties
6. Cube deployment wizard

53
Create a Drill Through Report

• Define the context


• For what dims and members should the report display
• Define report content
• Wizard driven selection
• You can customize the SQL
• Associate cubes
• Can associate multiple models

• How does a user know a drill through exists?


• Apply coloring in Smart View

54
So Can I Use Studio with Planning?

• Technically no

• But I need to drill through from a Planning application to a


relational table containing source details or even better, an actual
invoice…

• Here‟s the workaround to make that happen…


Drill Through Set Up Steps

• First you must have a relational source that contains tables for each
of the drill through dimensions that match the dimensions in the
Planning application
• Hierarchies, member names
• Create a Essbase Studio components for the Planning application
• Data Sources
• Mini-model
• Hierarchies (only need those dimensions for the Drill Through reports)
• Cube Schema
• Essbase Model
• Drill through reports
• Studio Redeployment of cube model to the Planning Application >>
Update All Hierarchies
• Will associate the drill through reports with the defined dimensions
• Must Redeploy / “Update All Hierarchies” after every refresh
Create Mini-Schema
Create Cube Schema
The End User Experience (Smart View)

• Use formatting to highlight data intersections or


members where drill through reports exist

xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
Xxx xxxxx
Xxx xxxxx
Xxx xxxxx
Xxx xxxxxx
xxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
The End User Experience (Smart View)

• In Smart View, select Adhoc Analysis >> Drill Through


Reports
Select the Drill Through Report

• For the member or data value, a list of valid drill through


reports will display
• Yes – you can have more than one drill through report (to
different sources even)
Relational Source Detail Displayed

• Based on selected members, those are passed as parameters /


context for the drill through data
• See example below – detailed invoice amounts for a specific account
for a specific month and year are returned
• Can drill from any level in the Essbase database
• Although watch out for the number of records to be returned

xxxxxxxx
xxxxxxxx
Drill Through to Images

• Technologies like Imagenow or Oracle‟s Stellant provides access


to document images via web URLs

xxxxxxxx
xxxxxxxx xxxxxxxx
Drill Through to Images

xxxxxxxxxxxxx
xxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
XXXXXXXX
XXXXXXXX
xxxxxxxx
XXXXXX
XXXXXX

xxxxxxxxxxxxx
xxxxxxxxxxxxx

xxxxx
xxxxx
Remember …Making This Work in Planning

• Dimensions and hierarchies in source must match


Planning
• Studio Redeployment of cube model to the Planning
Application >> Update All Hierarchies
• Will associate the drill through reports with the defined
dimensions
• Must Redeploy / “Update All Hierarchies” after every
Planning refresh
Other Tips

• Backup your Planning application and database!


• Deploy the model to a blank / new Essbase database first
• Make sure the hierarchies are building correctly before deploying
over the Planning database
• Don‟t rebuild dimensions – you‟ll lose all the properties
• You must update all hierarchies (otherwise the drill through report
won‟t “attach” to the dimensions”)
• Today – drill through is only available in Smart View and Web
Analysis
• Remember you can drill on data and/or members
• Many other tips and tricks for Essbase Studio
• But that is a different presentation (or 1 day interRel class)
Can I Still Use Native Essbase
Security?
Native Security vs. Essbase

• Shared Services is where you manage security for all


of your Hyperion / Oracle EPM products (beginning in
System 9)

• Did you know you could actually still use native


Essbase security (if you wanted to)?
Pros / Cons of Native Essbase Security
Pros Cons
• Manage users and groups directly • “Double maintenance” sort of..
within Essbase administration • Doesn‟t allow use of External
services (MSAD) groups
• Able to use external authentication • Shared Services isn‟t the single
(MSAD) for users security portal for all Hyperion
• Able to use Essbase API products
commands to manage security • LCM (Life Cycle Management)
• Application copies/migrations in utility isn‟t available for Essbase
EAS can include security even objects
across Essbase servers • No segregated „Provisioning
• Ability for Essbase administrators Manager‟ role separate from
& application owners to quickly server or application
add groups & users administration
Pros / Cons of Shared Services Security for
Essbase
Pros Cons
• More comprehensive External • Shared Services and Essbase have
authentication (MSAD) integration with to be synchronized (can be a time
provisioning consuming process depending on
• LCM utility is available for Essbase number of users)
objects • Application copies/migrations in EAS
• Able to have „Provisioning Manager‟ cannot include security but security
users that are not Essbase can be migrated separately through
administrators Shared Services
• EssCMD and MaxL statements can still • Essbase API calls cannot be used to
be used to add/update/delete users add/update/delete users
• Addition/removal of users within • External (MSAD) and native
External (MSAD) groups is handled (Hyperion) groups must have unique
outside of the Hyperion system names
• Security audit/reporting tools that • No way to force all security to be
reference the External (MSAD) External (MSAD) so some native
directory can include Essbase in their (Hyperion) users and groups could
reporting exist outside of the auditing/reporting
done against MSAD
What is the right answer for you?
• What Oracle EPM products are you using? Do you use more than
one EPM product? Or are you strictly an Essbase / Excel Add-in
shop?
• What version are you using?
• You decision may be different in a 931 world vs. 11 world with LCM
• Who are the users and do they use more than one Oracle EPM
product?
• How many users do you have for Essbase?
• Who maintains security? Who maintains security for which Oracle
EPM product?
• How are groups set up in your external directory? Can you
leverage existing groups? Do you have to migrate / create groups
in the external directory? If a new external group is required, what
is the turn around time to create the group and assign the user
(so that you can then leverage it in Shared Services)?
• What are nightly batch windows?
In Summary

Shared
Essbase
Services
Security
Security

Good: More control as


Essbase admin
Bad: Duplicative
Good: Less duplicative
security work, more
security work, audit
maintenance if you own
controls, less
more than one EPM
maintenance
product
Bad: Less control as
Essbase admin
Other Miscellaneous Tips

Recent Customer Questions…


Copy Filters (or other Essbase Objects)

• Situation: I have defined a number of filters on my


Essbase database. At the end of each month, I
archive a copy of database and then I would like to
reattach the filters. After the database is created, I
can use the EAS Console to copy the filters from the
current database to the archived version...but I want a
scripted / automated way to do this?
• Where is the “copy” command in MaxL?
Create As

• Use the “As FilterYouWantToCopy” optional argument


to the “Create Filter” command
• For instance, say you had a filter called
“Sample.Basic.West” and you wanted to copy it to
“AppCopy.DBCopy.West” (note the change in the
application name and database name)
• Create filter AppCopy.DBCopy.West as
Sample.Basic.West ;

• Apply this for other Essbase objects as well in MaxL


Are You Having this Issue?

• If you are experiencing slow response time when you


are bringing up the sessions dialog in EAS (or MaxL),
you can add the following to your Essbase.cfg file
• NO_HOSTNAME_LISTCONNECT True

• When set to TRUE, IP addresses are not converted to


hostnames, which improves the performance of the
display session MaxL statement
Agenda

• Converting #Missing to Values in Excel


• Essbase Workarounds with Data Load & Dimension Build Rules
• Essbase Workarounds with Substitution Variables
• Planning Metadata Filters
• Drill Through to Planning using Studio
• Native Essbase Security
• Other Miscellaneous Tips (if we have time)
• Questions and Answers
QUESTIONS AND ANSWERS

Edward Roske
eroske@interrel.com
BLOG: Looksmarter.blogspot.com
WEBSITE: www.interrel.com
TWITTER: ERoske

78

You might also like