Want to know The Truth About CPM?

29 December 2014

Getting close

Here I am again, doing the same old thing

Yes, another blog post on The Book.  And yes, another tease post.  Once we (note how I am not saying who “we” are) get all of our drafts to the editor and the copy editing process begins, I’ll spill the beans on what this is all about.

I finished my draft at 1:43 am this morning and sent it over to Tim German for his contribution.  It should be a really good chapter all about the subject of this blog.

In the meantime, thank your lucky stars you aren’t doing this, happily this time without cats:

That’s the same dining room, only marginally less messy, and me again working on a paper draft.  I do lots of editing in Word, but that final review has to be on paper.

In addition to my literary output, there is a jar of what promises to be delicious sauerkraut next to me.  I’m not totally sure why that is on the dining room table and not the pantry but in my current state of sleeplessness anything is possible.

For the record, I’m at 14,599 words for the first chapter and 13,948 words for the one I just finished.  That’s novella length.  I am trying not to think about how many hours I, and a bunch of other talented-yet-stupid-for-doing-this people have put into the project.  I reckon I’ve invested 500 to 700 hours – after a while, who bothers counting?

What’s next?

Sleep?  Probably not.

As far as this blog is concerned, I’ll be doing a This Was The Year That Was review sometime next week.  This has been a banner year for the blog although of necessity my posts have diminished with all of the writing I’ve been doing.  

Be seeing you in the new year.

14 December 2014

A plea for Hybrid Essbase help

A plea for help

As some of you know, Tim German and I are writing a chapter in the OMG-I-must-be-nuts-to-do-this-again Special Project.  Given the agony I and the gaggle of august geeks I have roped into this project (one would think they would know better, but they didn’t) are going through getting this all done on time for publication, I’d have to say they are in that cloud cuckooland category as well.  But it’s all fun, sort of.  We think.  On to the subject of this post know that I’ve (not Tim, he is made of sterner stuff) had my chance to whine.

You may ask (maybe you don’t, pity that as it’s the whole point of this post), Cameron and Tim, just exactly what chapter are you writing?  And why is this a plea for help?  We’re ever so glad you asked that question, as this post’s raison d'ĂȘtre is to tell you why and what and then to ask for your help.  In short, we’re writing a chapter on Hybrid Essbase and we need your help figuring out the likely future direction of Essbase.  Momentous enough for you?

Just in case you don’t know

Hybrid Essbase is the future of Essbase.  Yes, really.  It isn’t BSO and it isn’t ASO – it’s both all in one delicious package.  Oracle have stated as much in public settings – we’re not breaking any NDAs or confidences..  We are beyond happy to hear this because it means that Essbase has a future, Essbase development is ongoing, and thus we can continue our Essbase blogs and incidentally continue our so-called careers.  What’s not to like?

What’s the frequency, Kenneth?

Here’s the deal – We know what’s in Hybrid today.  We don’t know what will be in Hybrid tomorrow.  But we can guess at what is needed, we think.  What do you think Hybrid must have to become the de facto replacement for BSO and ASO?  Here’s our list – what’s on yours?


  • DTS
  • Time Balance
  • Cross dimensional operators
  • Data load to upper and lower intersections
  • Theoretical database size limit = ASO
  • Hybrid calc scripts
  • All BSO calc script functions
  • BSO functions that mimic MDX, e.g., ???
  • Attributes in Hybrid
  • DATAEXPORT and Essbase report scripts in Hybrid
  • TOPDOWN member formulas
  • Partitions to BSO


  • Compression dimension
  • Solve order
  • Optional MDX grammar
  • Paged outline file (IIF there are larger databases)
  • Materialized aggregations
    • Query hints
    • Persistent tablespaces


  • Database statistics that report both BSO and ASO statistics
  • Documentation that explains:  
    • Internals of the database
      • Have you ever heard Tom Kyte talk about the Oracle db?  I’ve been to one or two of his presentations (NZOUG and GLOC) and I think I understood the first 60 seconds of his speech (mostly the bit where he said, “Hello, my name is Tom Kyte”) but I was able to suss out that he talked about the internals of the database and how to best tune for performance.  The Oracle db is the heart of Oracle – if there ever was a competitive advantage re internals confidentiality, this product would be the one to exercise that.  But Oracle don’t do that.
      • So why can’t Essbase geeks have that same transparency?  We do have it for BSO, mostly, but ASO’s internals are barely discussed in the DBAG and the best explanation extant is Dan Pressman’s chapter in Developing Essbase Applications:  Advanced Techniques for Finance and IT Professionals.  Why can’t Oracle provide this for Hybrid?  Please.  Rant over.
    • How to tune Hybrid databases for best performance
    • Database statistics that merge ASO and BSO statistics
  • Death to load rules.  Please?  Pretty please?  Pretty please with sugar on top?  Pretty please with sugar on top and whipped cream?  Pretty please with sugar on top, whipped cream, and chocolate sauce?  Pretty please with sugar on top, whipped cream, chocolate sauce, and a cherry on top?  Please?

Again, the plea for help

Send your comments care of this blog’s comment section below, or to my email (if you have it), or to this Twitter thread.  We’ll thank the Best and Brightest for their help in the Acknowledgements section if we use your suggestions.  Think of it – immortality in print and all the more reason to buy copies of the book (hopefully in the hundreds if not thousands) so I can continue my royalty income of 32¢ per copy (yes, really,that’s my share).

Thanks and be seeing you.

02 December 2014

Stay tuned to this station for important information

The first hurdle passed

For those of you wondering why I seemed to have dropped off the face of the social media earth, I have been busy, busy, busy.

What have I been busy at?  Another book.  And it’s not about geeks and cats, the pictures in this post notwithstanding.  Nope, it’s the follow up volume to Developing Essbase Applications.

I’m going to leave the details a mystery (but yes, it is a group project to end all group projects, again, and yes we have a publisher and a contract and all of those wonderful things so it’s all for real)  as there’s still much to do and I don’t want to jinx the project.  For those of you who follow me on Twitter (I know for a fact that you do not, cf. my past blog post on blog readership so why don’t you get with it and read my even more frequently updated drivel and inanity), will have seen my tweet last night which ought to give you a hint as to what one of my chapters is about.
No, it is not a book Karl Malden, although I do encourage everyone to watch The Streets of San Francisco as it is an excellent police procedural.  And all of the cars are from FoMoCo.  And it is a Quinn Martin Production, so it has to be good.

In any case, that’s the scultpure that inspired the name Dodeca.  If that isn’t enough hints, I don’t know what is.

In any case, I thought you might like to see yr. obt. svt. at work so you can all thank your lucky stars you don’t do something as stupid as writing a book.  Fwiw, my royalty share on Developing Essbase Applications is 32¢ a copy.  It sure ain’t a road to riches.

So what am I doing?  Below you see my cats helping me out as I edit my first draft.  That’s Peanut sitting on the chapter, perhaps providing editorial comment by sticking her rear end on half of the chapter.  In the front Is Adam, looking incredibly bored, so perhaps yet another editorial comment.

I apologize for the mess.  This is the dining room and my maelstrom of stuff has hit this room.  All I can say is you should see my office.  Eeek.  I had to leave the untidiness behind me and ruin another room.  

Yet another picture – OMG, I have to clean.  And get Peanut off my manuscript.  Cats are such stinkers.

I feel sort of bad wasting your time with cat pictures but isn’t the internet all about watching cat videos? I’m just joining the club.  And they’re great cats.  Both are rescues from the mean streets of Philadelphia.  Adam, the older of the two, was rescued in Fitler Square where I used to live, and Peanut from under a truck in Chinatown.  I will spare you my rant about strays and unthinking owners.

So what’s next?

Cleaning my house?  Definitely.  After that, the editing process, getting the other chapters in, all of the fun legal stuff with Oracle (yes, they vet the whole thing, give us permissions to show screen shots on an image by image basis, etc. but don’t worry, it’s our content).

After all of the chapters are complete and we’re actually in the process of the second draft, I’ll share some detail about the book.  I’m very excited (and relieved that I got this chapter done, only ½ of another one to  go) about our work and I think it will be valuable to world+dog.

Be seeing you.

23 November 2014

9,000 + 5,700 + 12,000 = wow

Short and sweet, for once

This post is going to be short and sweet because I am in the middle of Yet Another Really Big Project That Pays Bupkis.  You would think I would learn, but then you (and I) would be wrong.  Unfortunately.  Stay tuned to this blog for a Big Announcement in the next month or so.

What I should have, but don’t

I do have 80% of a really interesting (ahem) post on tap but you know how that last 20% goes and I don’t have the time.

I have another really interesting blog post on Calculation Manager that I have, at least in my head, about 50% written but that too is going to take time.

And I just don’t have any.  Bummer.

What I do have

I better not let too much time go by before I add new content, or this will be the last time I see numbers like this:

This blog has finally attracted more than 9,000 sessions, more than 5,700 users, and more than 12,000 pageviews in a 30 day period!  Small beer to many, but big news for me.

The blog has been just shy of 9,000 sessions for the last two or three months and it got to be kind of agonizing to see if it would ever break through.  It has.

According to Google Analytics, audience is defined in the following ways:
  • Sessions – An instance of a user actively engaged on this blog
  • Users – Users that have at least one session.
  • Pageviews – The total number of pages viewed

You’ve engaged with this blog over 9,000 times in the last (as of Friday) 30 days.  That means that globally there were 9,000 instances of of people saying, “I wonder what that idiot Cameron has come up with this week.”

And here we are.

Btw, those statistics are not because I sat in front of my computer hitting F5 on http://camerons-blog-for-essbase-hackers.blogspot.com/ again and again and again till I got really good numbers although that thought did cross my mind.

Instead this reach is because of you.  You’re the ones that read this blog, find value (in theory), and come back for more.

It sort of amazes me that anyone, other than my mother, reads this thing.  And I have to prod her sometimes with comments like, “Mum, didn’t you see my mention of:  you/strange love of Faygo red pop/desire to visit the Henry Ford Museum again, yes, again/need to drink Tim Horton’s coffee/various strange references to (un)popular culture?”  Invariably, she has not.  So that’s at least one person who doesn’t pick up what I’m laying down but you, Gentle Reader, are.

Thank you

There really isn’t much to say other than thank you for finding so much value in this blog.  I’m going to do a year-end review of this blog by the numbers but breaking through this particularly statistic (and honestly, I don’t know why 9,000 became a goal, but it did) just tickled me pink.

Thanks again.

Be seeing you.

17 November 2014

CalcMgrExecuteMaxLScript and RUNJAVA


This is just a super (well sort of) quick post on the @CalcMgr CDF and running MaxL scripts.

You saw that I previously discussed the @CalcMgrExecuteEncryptMaxLFile command and showed how both to use that calc script function as well as the RUNJAVA equivalent.

Over the weekend, mostly because we are sad individuals, Peter Nitschke, Tyler Feddersen, and I were going over how to use @CalcMgrExecute in conjunction with MaxL shelling to run batch code.  Fascinating, eh?  Maybe.

In the course of that, I stumbled my way through the RUNJAVA syntax (which, of course, is maddeningly different than the RUNJAVA commands for running the encrypted MaxL file and no, not in the way you would think) and came up with one or two interesting twists on passing both member names and just plain old parameters to a MaxL script.

One note – I am not going to go into how to use shelling in MaxL scripts, but am just going to cover the basics and one or two odd things in running MaxL scripts in this post.

What am I trying to run?

Here’s the MaxL script noencrypt.msh:

The username, password, servername, and a single member name must be passed as parameters.


When it comes to using the Calc Mgr MaxLFunctions CDF with RUNJAVA the important bit to understand is that it is position dependent.  By that I mean the code that runs encrypted MaxL scripts and the code that runs non-encrypted MaxL scripts has no explicit flag that tells RUNJAVA to run them one way or the other.  Instead, it is the presence of the –D and encrypted keys (or maybe it’s just –D – dunno on that one as I try to have some kind of a life) that forces an encrypted script execute.  

And the absence of that information makes the RUNJAVA invocation of the CDF run the MaxL script as non-encrypted.  Interesting, eh?  I have to look into other commands but again, I sort of have a life, or at least I try to.

Remember this about RUNJAVA – it does absolutely zero syntax checking.  You could stick NowIsTheTimeForAllGoodMenToComeToTheAidOfTheirParty and EAS wouldn’t throw an error.

Non-encrypted MaxL file

If you want to do it the right way, see the below:

One thing that is nice about this is that you do not have to pass the username, password, and servername to the MaxL script unless you wish to as the RUNJAVA parameters you see there are just that – parameters.  And just like running a MaxL script from a command line, what gets passed, if anything, is up to you.

Another thing to note is the double quotes, double backslashes.  I’ve used double quotes and single forward slashes – it never occurred to me that my advice on MaxL scripts quoting and escaping also applied to RUNJAVA.  Thanks, Peter, for pointing that out.

Encrypted MaxL file

This is in contrast to the way an encrypted MaxL script is called via RUNJAVA.  I suppose one could argue that this is not all that unreasonable – when an encrypted MaxL script is called from the command line it must receive the decrypt flag and the public key.  What the @CalcMgrExecute (or its RUNJAVA) equivalent also requires is the username and password in encrypted for even though the called MaxL script has that information.  Weird.

After the encryption information, you can optionally pass more parameters such as the server name and a member name.


If RUNJAVA isn’t your cup of tea, you could always use @CalcMgrExecuteMaxLFile.  The nice thing about this command is that it will syntax check your code.  I actually used this technique first to back into what I would need for the RUNJAVA equivalent.

Remember that you must have a block to run this in (it is, after all, a calc script function), and only select one block in your code unless you want to run this multiple times, once for each block.


Note that parameters must be enclosed within a @LIST function.  You will also note that only the member name Inventory has a @NAME function surrounding it.


For a point of contrast to RUNJAVA, note that this approach does NOT force you to pass the encrypted username and password – just the public key.  No, I have no idea why the two are different since they call the same function within the CDF.  Some Things Are Not Meant To Be Understood.

Would you believe?

In both encrypted and non-encrypted MaxL, note this odd bit:

Note the @NAME() around the username.  This will syntax check and run quite nicely.  But remember, hypadmin is a username, not a member.

Alas and alack, but not all that surprisingly, when I remove @NAME() from around the member name Inventory, EAS pukes:

From this, I take it that the CDF doesn’t care if you wrap non-member names in @NAME() but does care if you leave that off of real member names.  Weird but there it is.

And of course RUNJAVA could give a tinker’s damn about @NAME – it takes parameters as you pass them and off it goes.


Peter had shown me a technique that ignored the username and password early in our email chain.  For whatever reason, I could not get it to work.  And then, as so often happens in at least my life, I told him that, and then I tried it again, and then…it worked.  Arrrgh.  So here’s the code, thanks to Peter:


Just in case you missed the syntax for not passing the username and password, it is:

That is doublequote-doublequote-comma-doublequote-doublequote.  I swore that I tried exactly that in my tests but given that it failed and then worked, I got something wrong. 

I did ask Peter how he figured that syntax out as it is not documented (well, that is sort of the purpose of this post, but still).  His reply, “I'm lazy? *grin* Wanted to see how little I could put in a piece of code and have it work.”  The sign of a true hacker.  Thanks again, Peter.
The Calc Mgr CDF is really powerful, hardly used (although that seems to be changing), and is still not documented.  Play around with it, look for that essfunc.xml file on your server to give you a few ideas, and have fun.

Be seeing you.

Thanks again to Peter and Tyler on this – always fun, if a bit geeky, to share interests in code.