Want to know The Truth About CPM?

30 September 2014

Oracle OpenWorld, Day 3

The craziness continues, part the third

For once I am  not in a session but instead at the Oracle Publishers Seminar.  Why oh why would I be interested in publishing?  Haven’t I already been there, done that?  All I can say is watch this space for some very exciting news.  :)  I don’t want to say anything more lest I jinx the whole thing.

Some fun stuff from yesterday

Here are some snaps to show what Oracle geeks get up to when they’re not taking notes/desperately trying to learn new stuff/networking like crazy.  Instead, we actually have a social life or at least a semblance of one.  See if you recognize some of the face.

My Man In California, my Ride or Die Girl, and yr. obt. svt.

That’s Glenn Schwartzberg, Natalie Delemar, and again, yr. obt. svt.

I think it’s interesting that you’re looking at three competitors (okay, I am a bit of a stretch as a competitor as I am a mighty consulting company of just exactly one, but I beg your indulgence on this) and we’re all friends.  So, frenemies?  
ODTUG event at Le Charm
Above is John King to the right and two people who I absolutely I should know but alas do not.  Through the door you see Danny Bryant and Crystal Walton.

Two of the coauthors of Developing Essbase Applications

Again, that’s Natalie Delemar on the left and Gary Crisci at dinner.

And now today

CON7498  --  Oracle Essbase New Features and Roadmap Update

Whew, that was a bit of a run from the Westin St. Francis (where the Publishers Seminar is actually being held right now) to Moscone West, room 3007.

I’m listening to John Baker, Gabby Rubin, and Steve Liebermensch speak on my Very Favorite Essbase Database In The Whole Wide World aka VFEDTWWW.  Try saying that out loud.  Quite difficult, isn’t it?

Gabby Rubin is about to begin his overview on the state of Essbase today.

What did Essbase get in the last 12 months?

    • Overcomes restrictions of CALCPARALLEL
      • Forces parallelization when CALCPARALLEL failed
      • Enables it for DATAEXPORT and DATACOPY
        • Note to self – must benchmark this
  • Parallel processing in
    • There are huge differences in both commodity (yeah!) and Exalytics
    • Remember that the latest Exalytics release is optimized for Essbase at the hardware layer, so the performance boosts on that platform are larger
      • More parallelism is allowed, e.g., more than 8 parallel threads
      • Like 40 or even 60 parallel threads
      • Found that best performance was a mix of FIXPARALLEL and more cores
        • Sometimes CALCPARALLEL does just as well as FIXPARALLEL, and if so, keep it.
        • But if not, then use FIXPARALLEL
  • MDX improvements
    • Optimized AGGREGATE
      • Faster totals for mutli-level hierarchies
        • Really a rewrite of the AGGREGATE function
      • Improvement is based on the query and dimension depth
    • MDX Sub Select (not yet via OBI)
      • Significant performance improvement for queries against large databases
      • The bigger the model, the better (relatively) it gets
      • Very much like a SQL subquery – wrap the thing in parentheses and the query from that
    • MDX optimizations for attributes
  • Essbase and Planning on Exalytics
    • Remember that improvements on Exalytics comes to the core product (usually)
    • Better concurrency
    • Patentable lockless algorithms
    • Up to 3.5x improvements from Exalytics v1
      • NB – This isn’t for a single calc, but for scalability to reflect real world concurrency
  • Reduce BSO fragmentation
    • This is Exalytics only for now
      • In-place block write
      • Slows fragmentation
    • Exalytics first optimization
      • It’s easier for Oracle to do this because it’s one platform as opposed to the many commodity hardware OSes
  • BSO/ASO Hybrid Aggregation v1
    • Combine BSO with ASO aggregation performance
    • 100% backwards compatible with all existing BSO databases – zero learning curve
    • Revolutionary (my words)
    • First release only handles simple aggregation
      • Not all the functions of BSO
        • But, you will always return the right result, although if it fires in BSO classic query processor it might very well be really slow
      • But if it fits within Hybrid/ASO, it’ll be fast
      • More functionality to come
    • Mix and match stored and dynamic hierarchies as required in calculations
    • Is ASO going away?
      • Nope, it’s the home for Really Big Databases
      • But the reporting cube use case is going to be obviated

The future

Steve Libermensch is now going onwards.  The estimated release is Subect to change, ETA EPM PS4 but of course no guarantees, so don’t blame Oracle if something slips.

One more time -- this is all discussed under Oracle’s Safe Harbor statement, which boils down to, “Oracle isn’t going to commit to anything, will deny that any Oracle employee ever uttered these words, and you likely shouldn’t rely on anything you’re about to hear.  Or maybe you should.  But we’re not telling.”  If Oracle didn’t do this, we’d never hear about what very well may be the future.  And then again may be not.  You decide.  

And with that disclaimer, here’s what Steve talked about:
  • Hybrid
    • Increase coverage for additional functions
    • Time Balance, Dynamic Time Series
    • Complex calculation semantics
      • Cross-dimensional references (yeah!)
      • Dimension references
    • Longer term:  Hybrid Mode in Calc Scripts
      • Upper level Hybrid members in a calc scripts, aka, allocations based on spread on % of total calculations
    • Faster because
      • It’s dynamic
      • The number of blocks are way less
      • IND file is smaller, as is PAG file
    • Having said that, depending on the query, stored BSO queries can be faster than Hybrid.  The thing to remember is that all of the pain around storage, calculation time, etc. is reduced, potentially quite dramatically.
  • @XRANGE within functions
    • Available in more calculation functions
    • Code against slice of data instead to single vector or dimension
    • Bugger, I missed it.  :)
    • Two new variable types:  MEMBER and NUMBER
    • Syntax
FOR (mbr, mbrList)
Statement ;
    • No more block creation – this is outline driven, not block driven
  • Renegade
    • Selected member that will provide a home for orphaned members
      • No more dataload.err
  • Batch outline editing
    • New API to allow mass operations on Essbase Outline
      • Death to Load Rules!
      • Huge performance
  • Improved resource management and CPU utilization
    • Thread management and thread based memory allocation and management
    • Fundamental improvement to Essbase infrastructure
  • Essbase R
    • Library to read and write Essbase database fromR
      • Connect
      • mdx2Array
      • writeBack
    • Future direction
      • Allow Essbase users to trigger R from Essbase
      • Embedded R in calc scripts
      • Generic capability to allow the extendibility of Essbase with 3rd party scripting languages
  • EAL financial intelligence moving into Essbase
    • Bringing EAL into Essbase by enhancing its core strength:  financial apps
    • Replicate EAL into Essbase
      • Financial Accounts dimension, member types, and behaviors
    • Integrated per plan
  • Post Load Processing
    • Post load script for data manipulation before it is stored in the cube
      • Think balances vs flow on periodicities
      • Any frequency submit, store in one
        • YTD, MTD, QTD comes in, periods get stored
        • Coming for Planning as well from forms
          • We don’t have to write calc scripts to do this
  • Dimension member properties
    • Text (!), arrgh, missed the rest
  • Cell status
    • How and when did a cell in the db get populated
      • Load, Calc, data entry, Dynamic
      • Transaction ID for the last update transaction
    • Available via calc scripts, AP, and MaxL
    • Will be available across all engine types
  • In-memory
    • On Exalytics, Essbase will be a pure in memory engine so no wait for I/O
      • Remain Exalytics only because cannot rely on commodity servers having enough RAM to do this
    • In memory aggregate views for ASO will not need to be stored on disk

Whew, that was a lot.  Shouldn’t you come to OpenWorld and see all this stuff live and in person?

Book signing at the OpenWorld bookstore

John Wyzalek of CRC Press got us a book signing event at OpenWorld.  Here I am flanked by the One And Only Natalie Delemar and Dan Pressman at the Oracle bookstore.

What’s next?

See, I do have friends, even as odd as I am.  Perhaps I am the object of widespread pity?  If so, please do not tell me.

Tim and Cameron’s Most Excellent BI/EPM meetup

And I’ll have even more time with my putative friends tonight at the BI/EPM meetup Tim Tow and I are hosting. 

You hopefully know all about the meetup Tim Tow and I are hosting tonight:  Oracle Open World EPM/BI meetup

You don’t have to be an OpenWorld attendee to join us.  If you haven’t yet RSVP’d, I’d be obliged if you did so we have a handle on how many geeks are coming.

See you at 7:00 tonight at:

Watch this blog for more information.

Be seeing you.


er77 said...

I hope it's my Enhancement Request

This function must improve functionality for replacing used “CREATENONMISSINGBLK” statement for sparse calculation. It’s function create virtual block based on the two FIX command with real block
Sample syntax
FIXCrossJoin ( FIX(OneMemberSet), FIX(OtherMemberSet),FixJoin(Common Dimension1,Common Dimension2))
FIX OneMemberSet have this real block {SparseDim1MBR1, SparseDim1MBR2, SparseDim2MBR1,#Value}
FIX OtherMemberSet have this real block {SparseDim3MBR1, SparseDim3MBR2, SparseDim2MBR1,#Value}
This function it’s used with syntax
FIXCrossJoin ( FIX(SparseDim1MBR1, SparseDim1MBR2, SparseDim2MBR1), FIX(SparseDim3MBR1, SparseDim3MBR2, SparseDim2MBR1),FixJoin(SparseDim2))
As a result I need to get Virtual block for calculation for this SET
{ SparseDim1MBR1, SparseDim2MBR1, SparseDim3MBR1}
{ SparseDim1MBR2, SparseDim2MBR1, SparseDim3MBR1}
{ SparseDim1MBR1, SparseDim2MBR1, SparseDim3MBR1}
{ SparseDim1MBR1, SparseDim2MBR1, SparseDim3MBR2}

This example very close for relational SQL calculation.It’s must work like LEFT JOIN like
Select * from AT
Left join AB on AT.A=AB.B

Jeff McAhren said...

Cameron, great stuff, thanks for posting. Could you elaborate a little on "Essbase R"? That sounds interesting.

Cameron Lackpour said...


R is a third party language that focuses on statistics:

I'm no statistician, but why we (well, me, but I'll bet you too) care about this is Oracle have exposed Essbase to *any* language. Want to write a link between Javascript and Essbase? It can be done.

I won't be happy till I see COBOL (or even better yet, FORTRAN) driving Essbase. :)


Cameron Lackpour

Cameron Lackpour said...


What I heard Steve talk about was the ability to to have relative xranges within other functions. As for block creation, I didn't hear it discussed within the context of @RELXRANGE. I could be wrong as they were going 100 mph (so 162.5 kph).

What Steve *did* talk about was the FOR LOOP grammar as a way to truly loop Essbase and create blocks along the way.

Sorry if that isn't exactly what you were asking for.