Thursday, January 11, 2018

There are times when Essbase users may need to see an ad-hoc collection of members aggregated together in Essbase, and that isn’t always an easy task. If it were an aggregation that is needed on a recurring basis, the Essbase administrator may add an alternate hierarchy to assist. Other times, users might just create a spreadsheet with the desired members in different rows or columns and use Excel formulas to add them together. In this blog post, I will cover a third option, the use of MDX to create dynamically-generated members, how to run them in Smart View, and how to make them much easier to use in Dodeca.

In order to illustrate how dynamically-generated members can be used, let’s consider an example using the Sample Basic database. Here is a simple quarterly income statement query that I will use as the basis for this blog post:

This MDX is pretty straightforward, but what if you wanted to see how New York and Connecticut would look if they were combined? This is the question that a generated member can return for you.

Generated members in MDX are created using the WITH MEMBER clause. Moreover, the generated member can then be used anywhere a normal member can be used, even in a slicer dimension (or what we would call a ‘page field’ in the classic Essbase add-in or a point-of-view in Smart View). Here is the query modified to use the new generated member:

So far, so good, but there are a couple of things to note. First, the member displayed in the POV is not a real member; that is to be expected. This leads to the second thing in that you cannot refresh the query as an ad-hoc analysis; the dynamically generated member name will be replaced with the dimension member name in its place.

To go even further, what if you want to have multiple generated members? In that case, the syntax is easy as you just continue with another MEMBER clause:

The syntax for creating and using generated members is not that difficult, but there are a couple of things that make it a bit more difficult than it should be for end users to use this approach.

First, any time end users start having to deal with scripts of any kind, the level of complexity goes up exponentially. As one of my mentors used to say, “The difference between zero lines of code and one line of code is much greater than the difference between one line of code and a hundred lines of code”. In other words, it is hard to get users to deal with code of any kind.

Second, once an end user has to ‘write a line of code’, or script in this case, then they assume the responsibility for it being correct. As there are differing levels of comfort and skill among users, the risk of error goes up.

Finally, when users use a script like the one used in this example, they have to type in the correct member names or, again, risk error. Here is the new MDX dialog in Smart View 11.1.2.5.720 showing where users type in the MDX including the member names.

To make it much easier for end users, Dodeca does a couple of things. First, Dodeca developers can configure reports to use MDX without the end user ever having to know that MDX is powering the report ‘under-the-covers’. Further, Dodeca has flexible Point-of-View selectors that allow the end user to simply pick which members they want to use in the query.

Dodeca report developers use tokens as a sort of substitution variables in the script. The tokens are replaced in the script at run-time by the members selected by end users. Here is the same script with tokens in place of the hard-coded values:

The Dodeca Essbase Scripts editor has tools to help the report developer create and test MDX scripts. Here are the Test Tokens available in the editor that allow developers to simulate the values plugged in by the Point-of-View selectors:

And the script itself in the scripts editor which has built-in testing facilities:

Finally, here is a Dodeca view that utilizes the tokenized MDX query and allows users to easily select the members they want dynamically aggregated and the report is produced without the risk of error.

Let me know if you would like to learn more about Dodeca and how it could help your company.

Thursday, January 4, 2018

Like many Essbase consultants and developers, I run Essbase server on my Windows 10 laptop. It was a lengthy ‘Creator’s Update’ Windows update and, once it was complete, Essbase was dead on my machine. So, what do I do? First, I didn’t panic; us pilots have a way of not panicking when things don’t go as planned. We have several people internally who had this happen to them over the past several months and we fixed it each time, so there was nothing to worry about.

The root cause was that my OPMN service, which runs Essbase, was gone. This happened on the other machines we have that experienced that in the past, so I went to talk with one of our resident infrastructure gurus, Jay Zuercher. I remembered there was a command that I could run to recreate the service; Jay had the command filed away somewhere and within a couple of minutes, he sent it to me:

SC CREATE "OracleProcessManager_epmsystem1" binPath="C:\oracle\middleware\epmsystem11r1\opmn\bin\opmn.exe -S -I c:\oracle\middleware\user_projects\epmsystem1”
I ran this command – as an administrator – and then went into services to set the service to start automatically and start the service running. That did not, however, result in Essbase coming back to life. Next, I looked at the Essbase logs and noted several issues having to do with security. Initially, I thought there may have been due to an issue with Shared Services, but then I remembered about the fairly common Essbase issue regarding a corrupted essbase.sec file. I don’t know if the corruption was related to the Windows Update, but the timing sure was suspect. I replaced the essbase.sec file with a backup copy and I was back in business.

Hopefully this doesn’t happen to you when you update Windows but, if it does, perhaps this blog post will make your recovery quick and painless.

About Me

Despite the fact that I often work half-days (12 hours), I am one of the luckiest geeks in the world. I am married to the perfect wife as she is smart, beautiful and provides a tremendous amount of support that makes it possible for me to do all of the things that I do.