SlideShare a Scribd company logo
Formula and Business Rule
Efficiency in OneStream
July 29, 2016
Aaron Bolshoun
Finit Services
Slide 2
Full Cycle Implementations
Upgrades
Dedicated Support
The Finit Family
Slide 3
Fully aligned with
our clients, not just
bottom line $
No debt or external
ownership
Work with Finit
employees, no
subcontractors
Compensation
based on CLIENT
SATISFACTION
PRIVATELY
OWNED
CLIENT
SATISFACTION
NO
SUBCONTRACTORS
DEBT FREE
Finit Values
Slide 4
Our values on which we ask you to provide consultant feedback:
• Approach & Collaboration
• Integrity & Honesty
• Client Betterment
• Self Betterment
• Colleague Betterment
• Finit Betterment
• Work Effectiveness
• Impact & Innovation
• Proactiveness
& Passion
Service Solutions Betterment
Finit Customer Success
Slide 5
Our values, culture, and approach to
becoming a trusted advisor to our
customers has led to
100% customer success
for every Finit client (250+) and for every
Hyperion and OneStream project (800+)
Slide 6
Some Finit Customers
Questions
Slide 7
Upcoming OneStream Webinar
Slide 8
Friday August 19th
Creative Solutions for Cash Flow & FX Analysis
through Dashboards
Presented by Jay Hampton & Christine Ong-Estrada
About the Presenter
Slide 9
Aaron Bolshoun
(abolshoun@finit.com)
Certification/Education
• MBA - Business Information
Technology, University of Denver
• BA - Northwestern University
• HFM Certified
Experience
• 3 years with OneStream
• 10 years with HFM
• 10 years with FDM
• 10 years of EPM / CPM
Implementation experience
Agenda
Slide 10
• Formula Efficiency
• Data Buffers
• New Functionality available in 3.7 Release
OneStream XF Formulas
Elements of OneStream that can be Customized
Slide 12
• Member Formulas
• Formula Pass
• Dynamic Calc
• Business Rules
• Finance
• Parser
• Connector
• Conditional
• Derivative
• Dashboards: Method Queries, SQL Scripts
• Transformation Rules: Complex Expressions
• Confirmation Rules
• Data Cells
• Dashboard Data Set
• Dashboard Extender
• Dashboard XFBR String
• Extensibility
• Event Handler
• Drill-Down
Efficiency
Slide 13
Types of Formula Efficiency
Slide 14
Different Types of Formula “Costs”:
1. Efficient Processing
2. Efficient Maintenance
3. Efficient Storage
4. Efficient Script Creation
Efficient Processing
Slide 15
Preferred Methodology
1. Can I do this without any formulas? Is it possible to produce result
via metadata attributes and hierarchy?
(Account type and/or Aggregation Weight)
• No impact to processing
2. Can I build this as a Dynamic Calculation?
• No impact to consolidation time, but takes time to calculate
in memory when a report is run.
3. Can I build this as a Member Formula (Formula Pass)?
• Stored in database, so increases consolidation time,
but no impact to report generation.
4. Can I build this as a Business Rule?
• Stored in database, so increases consolidation time,
but no impact to report generation.
Dynamic vs. Stored Calculations
Slide 16
Dynamic Calculation
Formula Pass
Dynamic Calculation vs. Member Formula
Slide 17
Dynamic
Calculation
Member
Formula
No Impact Consolidation Time Much Slower
Much Slower Report Generation No Impact
Unnecessary Consolidation Required
Can use Formula Pass or
Dynamic Calc in Source
Use with other
formulas
Can use Formula Pass
in Source
Data must already be
consolidated if source
contains a Formula Pass
Dependencies
Must assign Formula
Pass 1-16 accordingly
Do not aggregate Aggregation Aggregate naturally
Efficient Processing
Slide 18
• From the XF Design and Reference Guide:
“Consolidation performance is directly impacted by
the volume and complexity of Stored Calculations.
Careful consideration should be given to each Stored
Calculation since …. a large amount of data being
written to the Cube would negatively impact
Consolidation performance …. The quantity of
stored numbers is the most important factor when
optimizing Consolidation performance.”
Member Formula vs. Business Rule
Slide 19
• Member Formulas will always perform better than
Business Rules: Member formulas are multi-
threaded (parallel) while Business Rules run
sequentially (serial)
• Some logic, like custom Consolidation or Member
Lists, must occur within a Business Rule—API vs.
BRAPI
Efficient Maintenance
Slide 20
• We need to build all logic with the understanding that we
will eventually hand it over to someone else to maintain
• We need to make troubleshooting easier
• Formulas should be as dynamic as possible
• Use Comments!!!!
• HFM vs. OneStream: With great flexibility comes great
complexity! Where exactly does that logic reside?
• HFM: It’s in the rules file.
• OneStream:
• Member Formulas (on Account, Entity, Flow, UD’s, etc.)
• Business Rules
Lists of Formulas by Formula Pass
Slide 21
Grid View
Formula List Dashboard
Formula for Calculation Drill-Down
Slide 22
• Entering a formula in the Formula for Calculation Drill Down property
allows drilling on calculated Scenario, Account, Flow and UD members
Efficient Storage
Slide 23
• Storage isn’t free—it has costs associated
• Every Stored Member creates a record which takes up
storage space in the database when data is consolidated
• Be Specific: much more efficient to write to one specific
member instead of all of them
Efficient Storage: Data Explosion
Slide 24
• OneStream warns upon consolidation about a formula
that will cause data explosion:
API.Data.Calculate
• Tips to Avoid Data Explosion
• Use same level of detail on target (left side of =) as on the source
(right side of =)
• Do not use #All in Stored Member formulas
Formula Result
“A#Profit = A#Sales” No Data Explosion
“A#Profit:U2#Cust1 = A#Sales * 1.05” No Data Explosion
“A#Profit = A#Sales:U2#Cust1” Some Data Explosion
“A#Profit = 2.0” Large scale data explosion
Efficient Script Creation – Script Editor
Slide 25
• Color Coding:
• VB is blue
• API is black
• Strings are red
• Comments are green
• IntelliSense
• Integrated Script Library with filter:
• No need to “re-invent the wheel” – use existing code as starting point
(GolfStream as a reference)
• OneStream Script Editor provides many tools to simplify the process:
Efficient Script Creation – Rule Snippets
Slide 26
• Sample code for common calculations that integrates
with Script Editor is available in the XF MarketPlace
• Common Account formulas (e.g. Current Ratio)
• Formula for Calc Drill Down
• Writing to Error Log
• Confirmation Rules
• Member Lists
• Eval
• Many more & list
continues to grow!
TroubleShooting & Optimization: Logging
• api.LogMessage(message, detail) and
api.LogError(errorLevel, description)
• Consolidate with Logging provides visibility into all
calculations that run and how long each one takes
• Entries are logged in Task Activity Log
Slide 27
Consolidate with Logging
Slide 28
Balancing priorities:
Slide 29
1. Efficient Processing
2. Efficient Maintenance
3. Efficient Storage
4. Efficient Script Creation
Data Buffers and Eval Buffers
Slide 30
Data Cell vs. Data Unit vs. Data Buffer
Slide 31
• Data Cell
• One number uniquely represented by
a Cube and 18 dimension members
• Data Unit
• All data for a single:
Cube, Entity, Parent, Cons, Scenario,
Time
• E.g., Calculate one Entity/Period
 1 Data Unit
• Data Buffer
• A subset of data in a Data Unit
• E.g., A#Salary contains numbers for all
Cost Centers
Data Unit
Dimensions
Account-type
Dimensions
Data Unit Concepts
Slide 32
 Stored Formulas run for an entire Data Unit
 Cube and 5 Data Unit dims are known
 Valid: If api.Pov.Entity.Name.XFEqualsIgnoreCase(“CO”) Then
 Account-type dims can be anything
 Not Valid: If api.Pov.Account.Name … or If api.Pov.UD1.Name …
 Conditional logic requires Eval
 Avoid using api.Data.Calculate in a loop (performance)
 APIs
 api.Data.Calculate (easiest to use)
 Eval (most flexibility)
 api.Data.GetDataBuffer (legacy cell-level processing)
Eval Buffer Example
Slide 33
• api.Data.Calculate("A#Bonus = A#Salary *
Eval(A#BonusLevel)", AddressOf
OnEvalDataBuffer)
• Bonus by Cost Center using BonusLevel and Eval
• Order of Operations
• A#Salary – Data Buffer is retrieved from storage
• A#BonusLevel – Data Buffer is retrieved from storage
• Eval evaluates and modifies the BonusLevel Data Buffer
• Data Buffer Math creates a new Data Buffer
• A#Bonus - The new Data Buffer is stored
Eval Buffer Example - Formula
Slide 34
Eval Filtering – Method 1
Slide 35
• Filter using api.Data.Calculate:
• Syntax: api.Data.Calculate(formula, accountFilter,
flowFilter, originFilter, icFilter, ud1Filter, ud2Filter,
ud3Filter, ud4Filter, ud5Filter, ud6Filter, ud7Filter,
ud8Filter, onEvalDataBuffer, userState)
• For example:
api.Data.Calculate("A#Bonus = A#Salary * 0.05", "",
"", "", "", "U1#Selling.Base, U1#Eng")
Eval Filtering – Method 2
Slide 36
• Eval Filters the new Data Buffer:
• For example:
api.Data.Calculate("A#Bonus = Eval(A#Salary * 0.05)”,
AddressOf OnEvalDataBufferFilter)
• Generates the same result as Method 1
Eval Filtering – Method 2 Formula
Slide 37
New Functionality
in Version 3.7
Slide 38
Convert Unbalanced
Slide 39
• AddUnbalanced, SubtractUnbalanced,
MultiplyUnbalanced, and DivideUnbalanced
• Used to avoid data explosion when varying level of
Account-Type dimensions are required in a formula
• Valid:
api.Data.Calculate("A#6050 = A#5000 * A#3000")
• Bad Idea:
api.Data.Calculate("A#6050 = A#5000 * A#3000:O#Top")
api.Data.Calculate("A#6050:O#All = A#5000:O#All * A#3000:O#Top")
Convert Unbalanced
Slide 40
• Instead, use new Convert Unbalanced functions:
api.Data.Calculate("A#6050 =
MultiplyUnbalanced(A#5000, A#3000:O#Top,
O#Top)")
• First two parameters are Data Buffers to be
multiplied (or added or subtracted or divided)
• Third parameter is the Account Type dimension
member that will always be used with first
parameter, without causing data explosion.
Get Data Buffer Using Formula
Slide 41
• Allows use of an entire math function to calculate
a final data buffer:
• Syntax: Dim objDataBuffer As DataBuffer =
api.Data.GetDataBufferUsingFormula(formula,
scriptMethodType,
changeIdsToCommonIfNotUsingAll,
expressionDestinationInfo, onEvalDataBuffer,
userState)
• For example:
Dim myDataBuffer As DataBuffer =
api.Data.GetDataBufferUsingFormula("A#Sales – A#Costs")
Get Data Buffer Using Formula Variables
Slide 42
• After creating a data buffer variable, it can be named as a
Formula Variable and then reference inside api.Data.Calculate
or inside other calls to api.Data.GetDataBufferUsingFormula.
• This provides a lot of flexibility and it can even improve
performance because you can calculate a data buffer once and
re-use the variable multiple times instead of recreating it.
• For example:
Dim myDataBuffer As DataBuffer =
api.Data.GetDataBufferUsingFormula("A#Sales – A#Costs")
api.Data.FormulaVariables.SetDataBufferVariable
("myDataBuffer", myDataBuffer, False)
api.Data.Calculate("A#Profit = A#5000 + $myDataBuffer")
Get Member Names from ID’s
Slide 43
• Allows identification of Member Names when
looping:
• For example:
For Each sourceCell As DataBufferCell In
myDataBuffer.DataBufferCells.Values
Dim accountName As String =
sourceCell.DataBufferCellPk.GetAccountName(api)
Dim ud1Name As String =
sourceCell.DataBufferCellPk.GetUD1Name(api)
Next
Log Contents of Data Buffer
Slide 44
• Allows logging of Data Buffer contents for
Debugging
• Third parameter indicates number of records to be
logged.
• For example:
myDataBuffer.LogDataBuffer(api, "MyDataBuffer Output", 1000)
Slide 45
Questions?
Thank You for Attending!
Slide 46
Today’s Presenter:
Aaron Bolshoun
abolshoun@finit.com
General Questions:
Greg Barrett
gbarrett@finit.com
Copy of the slides or
Recording:
Email us for a copy of the slides or a
link to the recording
insights@finit.com
Past webinars:
www.finit.com/webinars
Follow us on Twitter for
updates:
@Finit_Solutions

More Related Content

PDF
OneStream Functionality You Might Not be Using (But Should Be)
PDF
Finit OneStream - What's Possible Part II
PDF
OneStream Deep Dive
PDF
OneStream - What's Possible?
PDF
Currency Translation in HFM
PDF
Where Did That Come From? Techniques for Debugging HFM
DOCX
HFM Zero view settings
PPT
FDMEE Tutorial - Part 1
OneStream Functionality You Might Not be Using (But Should Be)
Finit OneStream - What's Possible Part II
OneStream Deep Dive
OneStream - What's Possible?
Currency Translation in HFM
Where Did That Come From? Techniques for Debugging HFM
HFM Zero view settings
FDMEE Tutorial - Part 1

What's hot (20)

PDF
HFM Member List Tips
PPT
HFM-Implementation
PDF
Starting Your Modern DataOps Journey
PDF
KSCope 2013 - Balance Sheet Reporting - Design Consideration - KSCope Format
PDF
How to go from HFM (on prem) to FCCS(cloud) with a horizontal learning curve
PDF
GETTING STARTED WITH GROOVY FOR THE NON-TECHNICAL SUPERSTARS
PDF
Cash flow in hfm – simplified
PDF
Data-Driven Rules in HFM
PPTX
Deep dive on dynamic member lists
DOC
Hyperion Implementation Questionaries
PDF
EPBCS - A New Approach to Planning Implementations
PPTX
EPM, ERP, Cloud and On-Premise – All options explained - OOW CON9532
PDF
Finit - Creative Solutions for FX Analysis in HFM
PDF
Finit solutions getting the most out of hfm - web data forms tips and tricks
PDF
Understanding HFM System Tables
PDF
Groovy and PBCS is Game Changing
PDF
Basics of fdmee
PDF
Finit solutions getting the most out of hfm process management and phased sub...
PDF
Oracle FCCS Getting Started Guide II
PDF
Simplify Complex Consolidations and Close Processes with Oracle Financial Con...
HFM Member List Tips
HFM-Implementation
Starting Your Modern DataOps Journey
KSCope 2013 - Balance Sheet Reporting - Design Consideration - KSCope Format
How to go from HFM (on prem) to FCCS(cloud) with a horizontal learning curve
GETTING STARTED WITH GROOVY FOR THE NON-TECHNICAL SUPERSTARS
Cash flow in hfm – simplified
Data-Driven Rules in HFM
Deep dive on dynamic member lists
Hyperion Implementation Questionaries
EPBCS - A New Approach to Planning Implementations
EPM, ERP, Cloud and On-Premise – All options explained - OOW CON9532
Finit - Creative Solutions for FX Analysis in HFM
Finit solutions getting the most out of hfm - web data forms tips and tricks
Understanding HFM System Tables
Groovy and PBCS is Game Changing
Basics of fdmee
Finit solutions getting the most out of hfm process management and phased sub...
Oracle FCCS Getting Started Guide II
Simplify Complex Consolidations and Close Processes with Oracle Financial Con...
Ad

Viewers also liked (15)

PPTX
Planning Process Considerations
PDF
Finit creative solutions for cash flow fx analysis through dashboarding
PDF
Business Rule Engine - Jare
PDF
Finit - What's Trending: Topics on the Cloud and Infrastructure
PPT
TheServerSide Java Symposium 2005 : Business Rule Management, Enables Agile A...
PDF
Finit - All Things Chart of Accounts
PDF
Introduction to HPCM
PDF
Finit one small step - tips and tricks for transitioning from fdm to fdmee
PDF
Finit solutions - Automating Data Loads with FDMEE
PPTX
Loading Smartlists into PBCS using FDMEE
PPTX
FDMEE 11.1.2.4.200 Partner Meeting - May 2016
PDF
Finit how to let go - enterprise archive apps
PDF
Finit Hyperion Planning & PBCS Simplified User Interface
PPT
Agile presentation
PDF
Sky Is The Limit: Extending Oracle PBCS Beyond The Finance Department
Planning Process Considerations
Finit creative solutions for cash flow fx analysis through dashboarding
Business Rule Engine - Jare
Finit - What's Trending: Topics on the Cloud and Infrastructure
TheServerSide Java Symposium 2005 : Business Rule Management, Enables Agile A...
Finit - All Things Chart of Accounts
Introduction to HPCM
Finit one small step - tips and tricks for transitioning from fdm to fdmee
Finit solutions - Automating Data Loads with FDMEE
Loading Smartlists into PBCS using FDMEE
FDMEE 11.1.2.4.200 Partner Meeting - May 2016
Finit how to let go - enterprise archive apps
Finit Hyperion Planning & PBCS Simplified User Interface
Agile presentation
Sky Is The Limit: Extending Oracle PBCS Beyond The Finance Department
Ad

Similar to Finit formula and business rule efficiency in one stream (20)

PPTX
Clicks vs code df14pptx
PPTX
Salesforce Automation
PDF
Getting Started Using ACL in Your Next Audit
PPTX
Sage100 Tips and Tricks - Spring 2020
PDF
Using MS Excel In Your Next Audit - Top Basic & Intermediate Techniques
PPTX
Large Data Volume Salesforce experiences
PPTX
PPTX
Microsoft Business-230T01A-ENU-PowerPoint_09.pptx
PPTX
Process Builder Automation and Considerations
PDF
Metrics-Based Process Mapping
PDF
linkTuner Webinar - March 2013
PPTX
TrailblazerDX Motihari.pptx
PDF
SAP Automation with UiPath: Solution Accelerators and Best Practices - Part 6...
PDF
Financial Consolidation and Close Suite.
PPTX
Panel Review by Jeff Ho (Brief version: removing logo and all confidential info)
PDF
Document Management Options for Abila MIP
PPTX
Chromatography Data System: Report your Data
PDF
Quantifying DevOps Adoption Empirically for Demonstrable ROI
PPT
A Few Things You Might Not Know About Elite 3 E
PPTX
Understanding DB2 Optimizer
Clicks vs code df14pptx
Salesforce Automation
Getting Started Using ACL in Your Next Audit
Sage100 Tips and Tricks - Spring 2020
Using MS Excel In Your Next Audit - Top Basic & Intermediate Techniques
Large Data Volume Salesforce experiences
Microsoft Business-230T01A-ENU-PowerPoint_09.pptx
Process Builder Automation and Considerations
Metrics-Based Process Mapping
linkTuner Webinar - March 2013
TrailblazerDX Motihari.pptx
SAP Automation with UiPath: Solution Accelerators and Best Practices - Part 6...
Financial Consolidation and Close Suite.
Panel Review by Jeff Ho (Brief version: removing logo and all confidential info)
Document Management Options for Abila MIP
Chromatography Data System: Report your Data
Quantifying DevOps Adoption Empirically for Demonstrable ROI
A Few Things You Might Not Know About Elite 3 E
Understanding DB2 Optimizer

More from finitsolutions (15)

PPTX
Cash Flow Series, Part 2: How to make HFM do the dirty work
PPTX
Cash Flow Series, Part I: 2-dimensional vs 3-dimensional
PPTX
Lumberjack: Finit's Oracle EPM - Hyperion System Monitoring Tool
PDF
Finit - Breaking Through the Cloud Part II: FCCS, Closing in on Full Parity w...
PDF
Finit - Breaking Through the Cloud: An Overview of Oracle EPM Cloud
PDF
Finit - State of Oracle EPM
PDF
Finit - Hybrid Cubes to the Rescue
PDF
Finit - Driver Based Forecasting 021216
PDF
Finit - what would happen greatest hits and disasters
PDF
Finit solutions - The Benefits of a Rolling Forecast
PDF
Redesigning Hyperion Planning - Is going from Block Storage (BSO) to Aggregat...
PDF
Introduction to Oracle Hyperion Planning - New Features in 11.1.2.4
PDF
Upgrading to 11.1.2.4 and Other Technical Considerations
PDF
Supplemental Data Manager - What is it? What are some use cases? How do I get...
PDF
Data options with hyperion planning and essbase
Cash Flow Series, Part 2: How to make HFM do the dirty work
Cash Flow Series, Part I: 2-dimensional vs 3-dimensional
Lumberjack: Finit's Oracle EPM - Hyperion System Monitoring Tool
Finit - Breaking Through the Cloud Part II: FCCS, Closing in on Full Parity w...
Finit - Breaking Through the Cloud: An Overview of Oracle EPM Cloud
Finit - State of Oracle EPM
Finit - Hybrid Cubes to the Rescue
Finit - Driver Based Forecasting 021216
Finit - what would happen greatest hits and disasters
Finit solutions - The Benefits of a Rolling Forecast
Redesigning Hyperion Planning - Is going from Block Storage (BSO) to Aggregat...
Introduction to Oracle Hyperion Planning - New Features in 11.1.2.4
Upgrading to 11.1.2.4 and Other Technical Considerations
Supplemental Data Manager - What is it? What are some use cases? How do I get...
Data options with hyperion planning and essbase

Recently uploaded (20)

PPTX
Big Data Technologies - Introduction.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Approach and Philosophy of On baking technology
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Encapsulation theory and applications.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Electronic commerce courselecture one. Pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
Big Data Technologies - Introduction.pptx
Understanding_Digital_Forensics_Presentation.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
MIND Revenue Release Quarter 2 2025 Press Release
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Approach and Philosophy of On baking technology
NewMind AI Weekly Chronicles - August'25 Week I
Mobile App Security Testing_ A Comprehensive Guide.pdf
Spectral efficient network and resource selection model in 5G networks
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
The AUB Centre for AI in Media Proposal.docx
Encapsulation theory and applications.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Electronic commerce courselecture one. Pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Diabetes mellitus diagnosis method based random forest with bat algorithm
20250228 LYD VKU AI Blended-Learning.pptx

Finit formula and business rule efficiency in one stream

  • 1. Formula and Business Rule Efficiency in OneStream July 29, 2016 Aaron Bolshoun
  • 2. Finit Services Slide 2 Full Cycle Implementations Upgrades Dedicated Support
  • 3. The Finit Family Slide 3 Fully aligned with our clients, not just bottom line $ No debt or external ownership Work with Finit employees, no subcontractors Compensation based on CLIENT SATISFACTION PRIVATELY OWNED CLIENT SATISFACTION NO SUBCONTRACTORS DEBT FREE
  • 4. Finit Values Slide 4 Our values on which we ask you to provide consultant feedback: • Approach & Collaboration • Integrity & Honesty • Client Betterment • Self Betterment • Colleague Betterment • Finit Betterment • Work Effectiveness • Impact & Innovation • Proactiveness & Passion Service Solutions Betterment
  • 5. Finit Customer Success Slide 5 Our values, culture, and approach to becoming a trusted advisor to our customers has led to 100% customer success for every Finit client (250+) and for every Hyperion and OneStream project (800+)
  • 6. Slide 6 Some Finit Customers
  • 8. Upcoming OneStream Webinar Slide 8 Friday August 19th Creative Solutions for Cash Flow & FX Analysis through Dashboards Presented by Jay Hampton & Christine Ong-Estrada
  • 9. About the Presenter Slide 9 Aaron Bolshoun (abolshoun@finit.com) Certification/Education • MBA - Business Information Technology, University of Denver • BA - Northwestern University • HFM Certified Experience • 3 years with OneStream • 10 years with HFM • 10 years with FDM • 10 years of EPM / CPM Implementation experience
  • 10. Agenda Slide 10 • Formula Efficiency • Data Buffers • New Functionality available in 3.7 Release
  • 12. Elements of OneStream that can be Customized Slide 12 • Member Formulas • Formula Pass • Dynamic Calc • Business Rules • Finance • Parser • Connector • Conditional • Derivative • Dashboards: Method Queries, SQL Scripts • Transformation Rules: Complex Expressions • Confirmation Rules • Data Cells • Dashboard Data Set • Dashboard Extender • Dashboard XFBR String • Extensibility • Event Handler • Drill-Down
  • 14. Types of Formula Efficiency Slide 14 Different Types of Formula “Costs”: 1. Efficient Processing 2. Efficient Maintenance 3. Efficient Storage 4. Efficient Script Creation
  • 15. Efficient Processing Slide 15 Preferred Methodology 1. Can I do this without any formulas? Is it possible to produce result via metadata attributes and hierarchy? (Account type and/or Aggregation Weight) • No impact to processing 2. Can I build this as a Dynamic Calculation? • No impact to consolidation time, but takes time to calculate in memory when a report is run. 3. Can I build this as a Member Formula (Formula Pass)? • Stored in database, so increases consolidation time, but no impact to report generation. 4. Can I build this as a Business Rule? • Stored in database, so increases consolidation time, but no impact to report generation.
  • 16. Dynamic vs. Stored Calculations Slide 16 Dynamic Calculation Formula Pass
  • 17. Dynamic Calculation vs. Member Formula Slide 17 Dynamic Calculation Member Formula No Impact Consolidation Time Much Slower Much Slower Report Generation No Impact Unnecessary Consolidation Required Can use Formula Pass or Dynamic Calc in Source Use with other formulas Can use Formula Pass in Source Data must already be consolidated if source contains a Formula Pass Dependencies Must assign Formula Pass 1-16 accordingly Do not aggregate Aggregation Aggregate naturally
  • 18. Efficient Processing Slide 18 • From the XF Design and Reference Guide: “Consolidation performance is directly impacted by the volume and complexity of Stored Calculations. Careful consideration should be given to each Stored Calculation since …. a large amount of data being written to the Cube would negatively impact Consolidation performance …. The quantity of stored numbers is the most important factor when optimizing Consolidation performance.”
  • 19. Member Formula vs. Business Rule Slide 19 • Member Formulas will always perform better than Business Rules: Member formulas are multi- threaded (parallel) while Business Rules run sequentially (serial) • Some logic, like custom Consolidation or Member Lists, must occur within a Business Rule—API vs. BRAPI
  • 20. Efficient Maintenance Slide 20 • We need to build all logic with the understanding that we will eventually hand it over to someone else to maintain • We need to make troubleshooting easier • Formulas should be as dynamic as possible • Use Comments!!!! • HFM vs. OneStream: With great flexibility comes great complexity! Where exactly does that logic reside? • HFM: It’s in the rules file. • OneStream: • Member Formulas (on Account, Entity, Flow, UD’s, etc.) • Business Rules
  • 21. Lists of Formulas by Formula Pass Slide 21 Grid View Formula List Dashboard
  • 22. Formula for Calculation Drill-Down Slide 22 • Entering a formula in the Formula for Calculation Drill Down property allows drilling on calculated Scenario, Account, Flow and UD members
  • 23. Efficient Storage Slide 23 • Storage isn’t free—it has costs associated • Every Stored Member creates a record which takes up storage space in the database when data is consolidated • Be Specific: much more efficient to write to one specific member instead of all of them
  • 24. Efficient Storage: Data Explosion Slide 24 • OneStream warns upon consolidation about a formula that will cause data explosion: API.Data.Calculate • Tips to Avoid Data Explosion • Use same level of detail on target (left side of =) as on the source (right side of =) • Do not use #All in Stored Member formulas Formula Result “A#Profit = A#Sales” No Data Explosion “A#Profit:U2#Cust1 = A#Sales * 1.05” No Data Explosion “A#Profit = A#Sales:U2#Cust1” Some Data Explosion “A#Profit = 2.0” Large scale data explosion
  • 25. Efficient Script Creation – Script Editor Slide 25 • Color Coding: • VB is blue • API is black • Strings are red • Comments are green • IntelliSense • Integrated Script Library with filter: • No need to “re-invent the wheel” – use existing code as starting point (GolfStream as a reference) • OneStream Script Editor provides many tools to simplify the process:
  • 26. Efficient Script Creation – Rule Snippets Slide 26 • Sample code for common calculations that integrates with Script Editor is available in the XF MarketPlace • Common Account formulas (e.g. Current Ratio) • Formula for Calc Drill Down • Writing to Error Log • Confirmation Rules • Member Lists • Eval • Many more & list continues to grow!
  • 27. TroubleShooting & Optimization: Logging • api.LogMessage(message, detail) and api.LogError(errorLevel, description) • Consolidate with Logging provides visibility into all calculations that run and how long each one takes • Entries are logged in Task Activity Log Slide 27
  • 29. Balancing priorities: Slide 29 1. Efficient Processing 2. Efficient Maintenance 3. Efficient Storage 4. Efficient Script Creation
  • 30. Data Buffers and Eval Buffers Slide 30
  • 31. Data Cell vs. Data Unit vs. Data Buffer Slide 31 • Data Cell • One number uniquely represented by a Cube and 18 dimension members • Data Unit • All data for a single: Cube, Entity, Parent, Cons, Scenario, Time • E.g., Calculate one Entity/Period  1 Data Unit • Data Buffer • A subset of data in a Data Unit • E.g., A#Salary contains numbers for all Cost Centers Data Unit Dimensions Account-type Dimensions
  • 32. Data Unit Concepts Slide 32  Stored Formulas run for an entire Data Unit  Cube and 5 Data Unit dims are known  Valid: If api.Pov.Entity.Name.XFEqualsIgnoreCase(“CO”) Then  Account-type dims can be anything  Not Valid: If api.Pov.Account.Name … or If api.Pov.UD1.Name …  Conditional logic requires Eval  Avoid using api.Data.Calculate in a loop (performance)  APIs  api.Data.Calculate (easiest to use)  Eval (most flexibility)  api.Data.GetDataBuffer (legacy cell-level processing)
  • 33. Eval Buffer Example Slide 33 • api.Data.Calculate("A#Bonus = A#Salary * Eval(A#BonusLevel)", AddressOf OnEvalDataBuffer) • Bonus by Cost Center using BonusLevel and Eval • Order of Operations • A#Salary – Data Buffer is retrieved from storage • A#BonusLevel – Data Buffer is retrieved from storage • Eval evaluates and modifies the BonusLevel Data Buffer • Data Buffer Math creates a new Data Buffer • A#Bonus - The new Data Buffer is stored
  • 34. Eval Buffer Example - Formula Slide 34
  • 35. Eval Filtering – Method 1 Slide 35 • Filter using api.Data.Calculate: • Syntax: api.Data.Calculate(formula, accountFilter, flowFilter, originFilter, icFilter, ud1Filter, ud2Filter, ud3Filter, ud4Filter, ud5Filter, ud6Filter, ud7Filter, ud8Filter, onEvalDataBuffer, userState) • For example: api.Data.Calculate("A#Bonus = A#Salary * 0.05", "", "", "", "", "U1#Selling.Base, U1#Eng")
  • 36. Eval Filtering – Method 2 Slide 36 • Eval Filters the new Data Buffer: • For example: api.Data.Calculate("A#Bonus = Eval(A#Salary * 0.05)”, AddressOf OnEvalDataBufferFilter) • Generates the same result as Method 1
  • 37. Eval Filtering – Method 2 Formula Slide 37
  • 39. Convert Unbalanced Slide 39 • AddUnbalanced, SubtractUnbalanced, MultiplyUnbalanced, and DivideUnbalanced • Used to avoid data explosion when varying level of Account-Type dimensions are required in a formula • Valid: api.Data.Calculate("A#6050 = A#5000 * A#3000") • Bad Idea: api.Data.Calculate("A#6050 = A#5000 * A#3000:O#Top") api.Data.Calculate("A#6050:O#All = A#5000:O#All * A#3000:O#Top")
  • 40. Convert Unbalanced Slide 40 • Instead, use new Convert Unbalanced functions: api.Data.Calculate("A#6050 = MultiplyUnbalanced(A#5000, A#3000:O#Top, O#Top)") • First two parameters are Data Buffers to be multiplied (or added or subtracted or divided) • Third parameter is the Account Type dimension member that will always be used with first parameter, without causing data explosion.
  • 41. Get Data Buffer Using Formula Slide 41 • Allows use of an entire math function to calculate a final data buffer: • Syntax: Dim objDataBuffer As DataBuffer = api.Data.GetDataBufferUsingFormula(formula, scriptMethodType, changeIdsToCommonIfNotUsingAll, expressionDestinationInfo, onEvalDataBuffer, userState) • For example: Dim myDataBuffer As DataBuffer = api.Data.GetDataBufferUsingFormula("A#Sales – A#Costs")
  • 42. Get Data Buffer Using Formula Variables Slide 42 • After creating a data buffer variable, it can be named as a Formula Variable and then reference inside api.Data.Calculate or inside other calls to api.Data.GetDataBufferUsingFormula. • This provides a lot of flexibility and it can even improve performance because you can calculate a data buffer once and re-use the variable multiple times instead of recreating it. • For example: Dim myDataBuffer As DataBuffer = api.Data.GetDataBufferUsingFormula("A#Sales – A#Costs") api.Data.FormulaVariables.SetDataBufferVariable ("myDataBuffer", myDataBuffer, False) api.Data.Calculate("A#Profit = A#5000 + $myDataBuffer")
  • 43. Get Member Names from ID’s Slide 43 • Allows identification of Member Names when looping: • For example: For Each sourceCell As DataBufferCell In myDataBuffer.DataBufferCells.Values Dim accountName As String = sourceCell.DataBufferCellPk.GetAccountName(api) Dim ud1Name As String = sourceCell.DataBufferCellPk.GetUD1Name(api) Next
  • 44. Log Contents of Data Buffer Slide 44 • Allows logging of Data Buffer contents for Debugging • Third parameter indicates number of records to be logged. • For example: myDataBuffer.LogDataBuffer(api, "MyDataBuffer Output", 1000)
  • 46. Thank You for Attending! Slide 46 Today’s Presenter: Aaron Bolshoun abolshoun@finit.com General Questions: Greg Barrett gbarrett@finit.com Copy of the slides or Recording: Email us for a copy of the slides or a link to the recording insights@finit.com Past webinars: www.finit.com/webinars Follow us on Twitter for updates: @Finit_Solutions