workarounds for what the essbase developers forgot mioaug(3)
DESCRIPTION
tips for essbase developersTRANSCRIPT
Workarounds for What the
Essbase Developers Forgot!
Edward Roske
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
Copyright © 2007, Hyperion. All rights reserved.3
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.
=N(C2)
Result
Excel Trick
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
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
Markets YearScenarioProducts Measures
Free-form Data Loading, Example 2
East “100-10” Actual
Jan Feb Mar Apr May Jun
Sales 10 21 30 35 40 45
Marketing 8 16 20 33 38 40
Markets Year ScenarioProductsMeasures
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
• Unifies many sources for modeling
• RDB
• 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)
Does anyone see Planning listed here?
Essbase Studio Components
Data source definitions
Mini schemas
Hierarchies
Logical elements
Measures
Cube schemas
Cube deployments
Drill through reports
51
Essbase Studio - Layout
Minischema tab in the Data Source
Navigator
Data Sources tab in the Data Source
Navigator
Metadata Navigator – A tree view of
the metadata repository
Folders created by user to organize
contents in the repository
A dimension element of that is of a
“measure” type
A dimension element that is bound
to a physical column in the database
Hierarchy - A higher level metadata
element that has been created from
base dimensional elements
Cube schema – A higher level
metadata element that consists of
hierarchies and measures.
Essbase Model – A cube schema
that has all the properties necessary
to create an Essbase application
Thumbnail navigator to obtain a
miniaturized view of the minischema
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
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxXxx xxxxx
Xxx xxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxXxx xxxxx
Xxx 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
xxxxxxxxxxxxxxxx
Drill Through to Images
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxXXXXXXXX
XXXXXX
xxxxxxxxxxxxx
xxxxx
XXXXXXXX
XXXXXX
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx
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
• Manage users and groups directly
within Essbase administration
services
• Able to use external authentication
(MSAD) for users
• Able to use Essbase API
commands to manage security
• Application copies/migrations in
EAS can include security even
across Essbase servers
• Ability for Essbase administrators
& application owners to quickly
add groups & users
Cons
• “Double maintenance” sort of..
• Doesn‟t allow use of External
(MSAD) groups
• Shared Services isn‟t the single
security portal for all Hyperion
products
• LCM (Life Cycle Management)
utility isn‟t available for Essbase
objects
• No segregated „Provisioning
Manager‟ role separate from
server or application
administration
Pros / Cons of Shared Services Security for
EssbasePros
• More comprehensive External
authentication (MSAD) integration with
provisioning
• LCM utility is available for Essbase
objects
• Able to have „Provisioning Manager‟
users that are not Essbase
administrators
• EssCMD and MaxL statements can still
be used to add/update/delete users
• Addition/removal of users within
External (MSAD) groups is handled
outside of the Hyperion system
• Security audit/reporting tools that
reference the External (MSAD)
directory can include Essbase in their
reporting
Cons
• Shared Services and Essbase have
to be synchronized (can be a time
consuming process depending on
number of users)
• Application copies/migrations in EAS
cannot include security but security
can be migrated separately through
Shared Services
• Essbase API calls cannot be used to
add/update/delete users
• External (MSAD) and native
(Hyperion) groups must have unique
names
• No way to force all security to be
External (MSAD) so some native
(Hyperion) users and groups could
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
Essbase Security
Shared Services Security
Good: Less duplicative
security work, audit
controls, less
maintenance
Bad: Less control as
Essbase admin
Good: More control as
Essbase admin
Bad: Duplicative
security work, more
maintenance if you own
more than one EPM
product
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
BLOG: Looksmarter.blogspot.com
WEBSITE: www.interrel.com
TWITTER: ERoske
78