Why I created a blog

Its been many years since I first created this blog. It has remained true to Essbase and related information over those years. Hopefully it has answered questions and given you insight over those years. I will continue to provide my observations and comments on the ever changing world of EPM. Don't be surprised if the scope of the blog changes and brings in other Hyperion topics.


Tuesday, November 22, 2011

A different way to do currency conversion

I was at a client and needed to do some currency conversion for an application I was writing (BSO). In their case they had over 50 different currencies they would need to convert to USD (and only to USD). Their requirement was no maintenance to the calc scripts would be necessary if a new currency was added. The build of the currency dimension and loading of currency rates was automated in earlier versions of the project.  I got to thinking about the possibilities and the first thing that came to mind was to parse out a UDA and use it in my script. But alas, there is no function to do that. One idea down.

Next, I thought about an external table where I could pass a cost center number and pull in the currency rate for it. I would need a Custom Defined Function (CDF) to do this. This was a possible solution as my cube is built from Essbase Studio and I could write a SQL query to get the currency for any cost center and link that to the currency table to pull in the rate. Sadly, the client did not want to use CDFs in their environment. Plus, I don’t have one written to do that and am unsure of the speed as I have about 20k cost centers it would have to work against.

So finally, I thought of attribute dimensions. The client is on 11.1.2.1 and I remembered seeing some new attribute functions recently, I don’t remember what version but I think it was 11.1.1.1. So I looked through the tech reference and there was what I was looking for. @AttributeSVal. The function returns the string attribute value for the selected member. So I started experimenting.

First a little background. My cube has the following dimensions

Accounts – This is a standard account structure. It contains a balance sheet and multiple versions of a P&L. Each account is tagged with the type of rate it uses for conversion as a UDA (AVG or EOM).  It also has a section for statistical accounts. Included in this section buried are Average_rate, and EOM_Rate. (and a couple of others)

Periods – nothing special here, periods rolling to quarters

Years – just a list of years. Nothing special

Currency – This dimension has two parts. First are two members USD and Local. Data is loaded in as local and has to be converted to USD.  The second part of this dimension contains all of the currency codes used in the system

Scenario – again nothing  Actual and multiple forecast members.There are also some calculated members in this.

Organization. This is their entity structure. I won’t bore you with the structure, but the bottom level is cost center and this is where currency conversion needs to be done.

Products –again nothing special, This is a typical product hierarchy.

To this I added a new attribute dimension called Cost Center_Currency - It had the same members as are in the second part of the currency dimension (all the currency codes) but to make the member names unique, I prefixed them with the three letters “CUR” For example “USD” would be “CURUSD” and “EUR” would be “CUREUR”. I then associated this attribute dimension with the Organization dimension and wrote a quick load rule to populate the associations between cost center and the attribute dimension. I made sure if any cost center was missing an attribute member, I defaulted it to CURUSD. I figured is there was no currency conversion USD was always set to 1 anyway.No harm, no foul.

Now for the fun part, creating the calc script. I won’t bore you with the set statements or aggregations, etc, but just the currency conversion part. I’ll warn you at this point, I have changed the dimensions from the client to make it  generic and am not cutting and pasting code but typing it in by hand, so there could be minor typos in it. 

First a fix statement. I need to make sure I am at level zero Organization and other dimensions. I use substitution variables for the year and period I am going to calculate. I am going to replicate the script so I have different versions for Actual and forecast (I use different budget rates for forecasts).  Also note if the account does not have a UDA then I assume it is not convertible and make USD equal to Local. (This is because there are some non monetary items in the account structure).  Product has multiple rollups so I only grab the primary one and I only want the income statement and Balance sheet from Accounts.

Fix(&Year,&Per,Actual,@LEVMBRS(“Organization”,0),@relative(“All products”,0),@relative(“Income Statement”,0), @relative(“Balance Sheet”,0))

“USD(

IF (@ISUDA(“Accounts”,”AVG”)

“USD” = Local * @MEMBER(@SUBSTRING(@ATTRIBUTESVAL(“CostCenter_Currency”),3))->”No product”->”No Organization”->”Average_Rate”;

ElseIF (@ISUDA(“Accounts”,”EOM”)

“USD” = Local * @MEMBER(@SUBSTRING(@ATTRIBUTESVAL(“CostCenter_Currency”),3))->”No product”->”No Organization”->”EOM_Rate”;

ELSE

“USD” = “Local”;

END

)

EndFIX

So what does this do. First, I check to see what rate to use.(the IF statement). Next, I am getting the local value for each account. The

@MEMBER(@SUBSTRING(@ATTRIBUTESVAL(“CostCenter_Currency”),3))

is taking the value of the attribute dimension for the cost center we are working on and getting a substring of it starting in column 3. (remember when we created the dimension we added a prefix CUR to be beginning of the actual currencies).  Once we have the currency code back, it is returned as a string, so using @member we turn it back into a member name.  I then am using the cross dimension operators to define the intersections in the other dimensions where rates are stored.

The one issue I has was I forgot to tag my “No organization” member with an attribute value at first. When it got to that member, it crashed the calculation.

There you have it, a dynamic calc script to calculate currency conversion that does not need to be maintained. In my case, the dimensions were not huge so it ran pretty quick. I did find if I added dimensions to the cube, it slowed down considerably. I think the best use of this type of code would be in a business rule where you are fixing on one or a few cost centers but it could be used on bigger sets of data as well.

Thursday, October 6, 2011

Open World is a wrap

I’m sitting at the SFO airport waiting for an 11pm flight home after a looooong 9 days in San Francisco for the Oracle Ace Directors meeting and Oracle Open World. From my earlier blogs, you should surely have seen the announcement of the Exlytic machine so I won’t repeat it here. I sat through a lot of sessions, most on stragetic direction and/or roadmap. They seemed to blur together as the slides overlapped in many of them. There was talk of many enhancements and potential new products. I say potential because until I have my fat little hands on them, they are just a dream to me.

Interestingly, I think the best sessions of the conference were today (Thursday) when most people had packed up and gone home. I sat through a session on Fusion Apps and EPM and the voice in that session was how important Essbase and the Hyperion applications are to Fusion apps. As others have reported, Essbase is the engine beneath many of the apps and the apps have been designed to integrate seamlessly with Planning, HFM, Financial Close and other applications. Since Fusion apps have now been released, we should quickly see how they work. 

I next sat through a Smart View session and saw interesting things they are for HFM and  what they are working on for Essbase. For OFA customers who are switching to Essbase, there will be (insert standard disclaimer here) a new “Set” retrieval that looks like the OFA retrieves.

I ended the day going to the “It’s a wrap” party where I listened to Berlin for a while, then went and got one of my favorite dinners. There is a restaurant in SF called Cioppinos that of course serves the fish stew cioppino. It was a great way to end my time in SF.

Monday, October 3, 2011

I touched a machine and I liked it

photo (6)

With apologies to Katy Perry for the title. (My daughter would be amazed I actually know who Katy Perry is, but that’s a different story); I got my first look at the actual Exalytics machine. Well a sample box. and here is what it looks like. I would love to get my hands on one and try some client applications on it. I am going to two sessions today that give more details of the machine. Stay tuned!!!!

Sunday, October 2, 2011

Larry’s Keynote

Sitting with Edward Roske, listening to  Larry Ellison’s Keynote.Forgive me if this post is a little disjointed as I’m typing as I listen. I’m going to post this  He spoke about the success of the Exadata and Exalogic machine. His  talk discussed  parallel processing and the infinaband network to make it fast. Moving data fast is the key to speed of processing. Everything including the VM had to be optimized for performance and reliability. Another performance enhancement is 10X data compression which means les cost and less data movement. Again this means moving data  faster.  In the Exalogic case 100 times faster. Add to all of this DRAM and Flash to put almost everything in memory to create optimal speed for lower cost.
Why am I talking about all of this and how does it relate to Essbase? Well I let the cat out of the bag in my previous post. Larry announced the new Exalytics Intelligence Machine. Extreme performance  In Memory Analytics. Hardware and software merged to provide speed of thought Analysis (Gee we have been saying that about Essbase for years).  Now there is a machine than can support it. It uses a completely different UI. Everything is in memory, parallel versions of OBIEE< Essbase and Times 10.  This means huge improvements in Essbase performance. There will be a new UI for this machine because of the speed of query. It will be adaptive self tuning of  in-memory cache to optimize query based on workload.
lphoto (4)
Look at the hardware specs. Impressive
photo 2
Here is what the performance improvement is for OBIEE
photo (5)
Here is Essbase performance
photo 1 (2)
Notice the comparison of Essbase 11.1.2.1 vs. 11.1.2.2 for Exalytics. I guess they had to make some changes for in memory processing
photo 2 (2)
Finally a summary
photo 3
Daddy(Edward), I want one for the holidays. Will you buy me one?

Exciting news from Open World

I attended the Hyperion SIG meeting today (Sunday) at Oracle Open World and heard something that made my heart race. There on a slide on Major announcements for this year was the announcement of a new BI machine I believe the name was Exalytics. Larry is supposed to have details in his keynote, but this is exciting. From the short announcement, it sounded like a machine designed/optimized and integrated for optimal BI performance. There could be huge performance improvements from a standard install. It follows the Exadata and Exalogic machines from past years.

Two other announcements were:

Financial Management Analytics. This is OBIEE based real time analysis from HFM

sustainability Reporting Starter Kit. Again this goes against HFM. It is built on the GRI framework.

I don’t have much information on any of these, but I’ll blog the details when I know more.

Thursday, September 15, 2011

Smartview Enhancements

It is rare that I have multiple blog posts in a single day, but I am so excited to see this come out. Smartview 11.1.2.102 is available as a patch set on Support.oracle.com. Big deal you say, its just another patch! Oh how wrong you are my friends. This is the patch of all patches. The patch we have been waiting our collective lives for.  Why, because it makes Smartview act and behave like the Essbase add-in and more.

The first thing that I consider a fix is you can no do a submit data without first refreshing the sheet if you make changes to it. Second, we have all checked the “Use Excel formatting” option only to find the formatting disappears if we zoom in or pivot. Well, now it really does work. and it works in two ways. If checked, it leaves the excel formatting completely alone. For example, if you highlight cell C3 as red, and you pivot a page member to a row, cell C3 will still be red.  But the Smartview team has figured how to set it so if you zoom in, the formatting gets carried along with the zoom in. Very nice!!

But that is just the beginning. Here are some of my favorite new things. (note, I’m writing this from my experience with the Beta, some features in the final version may not have been implemented exactly as I describe them. Since this patch came out, I’ve not had time to install and test it)

Items that are now in Parity with the Add-in

1. You can select multiple members to do Ad Hoc operations on at one time (zoom in, zoom out, Keep only, remove only). This is not limited to just row or column member, you can select both at the same time

2. Support for LROs and Linked Partitions.

3. Aliases. There are two items here. first, you can have both the member name and aliases on rows in the report and second and one of my favorites, if you use an alias from an alias table that is not active, Smartview now understands it and returns the member name or alias for the active alias table (depending on what you have your options set to)

4. SHEET LEVEL OPTIONS are back!!!!!!!!! All options are defined as sheet level options and are stored with the sheet. that means you no longer have to worry about what happens if you change options and then do a retrieve on a different sheet. Also, There is now a dropdown on the options dialog so when you change your options, you can set a default set. This default set is used when new sheets are created.

5. All of the zoom options that you know and love in the add-in are now available. They are also on the ribbon bar as a dropdown on zoom in so you can select the zoom level/type you want to do.

6. Formula preservation and Formula fill are working like they should and then some. In the add in, if you pivoted in the add in you would lose the formulas. In this release, in most cases, the formulas are preserved. They may no longer be accurate based on what you did, but they will be there.

7. While the new features document does not talk about it, I believe range retrievals are back. You can highlight an area of a report and as long as al of the dimensions are represented , you can retrieve just that part of the report

New and enhanced items.

While the above items allow for Parity, the Smartview team was not satisfied with just making things the same. In a number of areas, the went miles beyond what the Add in could do. Here are some of the things.

1. You can have multiple grids on a single sheet. Remember the old message “Multiple grids on a single sheet are not supported at this time” Well the time has come and that message can now be archived forever. You can set up multiple connections to the same or different databases and do a refresh and they all update. I had 4 different reports on a single sheet and they all pulled data properly.

2. Butterfly and reverse formatted reports are now available. A butterfly report is where member names are in the middle with number on each side (as shown below. Note, the numbers are not from sample basic. I made then up to show a report sample)

image

You can also do a reverse report where the member names follow the data values

image

3. While 11.1.2.1 allowed you to hide the POV, in this new version, you actually are not hiding it, but putting it onto the sheet. In this new version, the POV members are stored on the sheet in row 1 (or wherever you designate them to be. When you enable the POV, it hides the row on the sheet. Changing the member names on the sheet or in the POV bar affects both locations. Another nice feature with the POV is you can type in member names directly if you know them. (it was actually introduced in 11.1.2.1)

4. A Member information button has been added to the ribbon bar. From this you can get almost all of the information about a member such as generation and level, consolidation properties, aliases, attribute associations, formulas, comments and UDAs.

5. within the Smartview connection information dialog, new functionality has been included. for multiple grids on a single sheet, you can delete the connection info (currently the only way to reset multiple connections) and also copy off the connection into to a sheet to send to someone if you are having issues with your retrievals so they know what you are connected to.

6. A host of new VBA toolkit functions have been added. The development team asked what APIs people are using and turned most of them into toolkit macros. This is very handy so you don’t need to code to the API any more, you can do it all with macros.

 

as with any release, there are disclaimers and this is no exception. In the new features document is the following

Unless otherwise noted, the features described here are available only in Smart View 11.1.2.1.102 connected to Oracle Essbase 11.1.2.1.102 through Oracle Hyperion Provider Services 11.1.2.1.102. They are not available in other releases of Smart View, Essbase, or Provider Services. They are not available in data providers other than Essbase.

This means that you have to install the patches for Smartview, APS and Essbase to take advantage of the features. You can use this version of Smartview with older versions of APS but won’t have the new features available.

AS for upgrades, here is what the support matrix says

You can upgrade to Smart View Release 11.1.2.1.102 from the following releases:

Release Upgrade Path From To
11.1.2.1.x 11.1.2.1.102
11.1.2.1.102 11.1.2.1.102
11.1.1.3.x 11.1.2.1.102
9.3.3.x 11.1.2.1.102

I am truly excited about this release. It gives us things we have been asking for in the add in for a long time and now puts Smartview ahead of the add in in functionality.    

I should also note, Cameron Lackpour has posted on his blog an Oracle presentation you can attend to see the new features demonstrated. Read about it here

A Special track at Kscope 12

Kscope12 (I actually hate the name, I much preferred Kaleidoscope, Sorry Edward) is 9 months away, so why am I writing about it now. For a few reasons. First, the call for abstracts is open and ends October 28th. I’ll post the actual announcement from an email I got from ODTUG later in the blog.
Second, I want to announce a special track that is being added and would like your feedback. The Track is a Beginner’s Essbase (and related products) track. For the past few years, I have commented how the Kaleidoscope conference is the most technical conference I have been to and how  you can hear things here that you can’t get anywhere else. It has been true, but in hindsight, this is also a bad thing. I think we have intimidated some newer admins/developers/super users and scared them away from the conference. In my infinite wisdom (stupidly), I put together a proposal for a beginners track and submitted it to the conference committee. The accepted the idea and made me the track chair for it. Now you know why I say stupidity.
At any rate, I’m looking for what sessions new people would want to attend. These are not lab sessions nor are they a boot camp, but should fill in the gaps of people who have taken those or have learned themselves.  There are three ways you can get me your ideas.
1. If it is something you would be interested in presenting, submit an abstract  Here. You get a free conference pass if your abstract is accepted.
2. If it is a session you would want, but don’t want to present yourself. you can submit your idea here
3. If you don’t like either of the ideas above, comment on the blog post and a copy gets emailed to me.
As I promised, and so I have more content in my blog without having to actually having to come up with it myself, Here is the email I got from ODTUG about sessions.
The countdown is on – only six weeks left to submit an abstract for consideration for Kscope12.
Do you want to join the best and the brightest, the most technical minds in your field?
Submit your abstract in one of these topic areas:
Abstracts are due by October 28.
Why Present?
  • You will receive a complimentary conference registration worth more than $1,400.
  • Your paper and presentation slides will be published in the Conference Proceedings.
  • Your paper will be published in the ODTUG.com Technical Database where all ODTUG members can download it - giving you long-term exposure.
  • Presenting at ODTUG Kscope looks excellent on your résumé and demonstrates to your clients and/or employer that you are good at what you do.
  • It just feels good to share your knowledge with an interested group of people.
  • You will definitely learn something unique from your audience.
Don’t Want to Present?
No problem! We still want your feedback. Is there a session you would like to attend at Kscope12? Submit a suggestion here.
Also, make sure to register to attend Kscope12 at the Early, Early Bird Rate, which runs through October 15.