Essbase Java API Consulting & Custom Development Available

I recently finished developing a solution for a client that involved writing a custom Java program using the Essbase API. The client was really amazed at how quickly I was able to develop the solution because their previous experience with using it (or hiring someone to develop with it for them) was not nearly as productive or smooth.

I graciously accepted their compliment and then told them that I’ve simply been working with the Essbase Java API for a long time – almost a decade now. Not only that, but I have several helper libraries that I use in most of my projects that prevent me from having to reinvent the wheel. By this time the libraries are quite battle-tested and robust and help speed up the development of many common operations such as pulling information out of the outline, running MDX queries, programmatically doing a data load, pulling statistical information, and more. Instead of spinning my wheels writing and rewriting the same boilerplate code, I accelerate development and focus on creating a good solution for the task at hand.

That all being said, for those of you out there finding this blog post now or in the future, whether you’re an administrator, consultant, manager, or other, and find yourself needing some help with a solution that involves Java development and utilizing the Essbase Java API, don’t hesitate to contact me. I am available through my consulting firm to do custom work or even fixing existing solutions you have already that are now exhibiting some quirk or need an enhancement. My extensive experience with Java and this particular API means than I can get up and running fixing your problem, not learning how to do it while on the clock.

Drillbridge 1.3.2 available

Well, it’s been a busy couple of weeks. I scaled back the plan for 1.3.2 a little bit and just polished up the things that were done. This release has some interesting but modest updates. Here’s the exact feature list from the release notes:

  • New function: rightMinusStarting
  • New function: leftMinusEnding
  • New function: monthToTwoDigits
  • Tables are now enhanced with Data Tables for formatting and other awesome functionality
  • Paging is back!
  • Interior of HTML table is very performance sensitive — might need to now generated inline

Left/Right starting/ending functions

So, a few things are going on here. There are a couple of new convenience functions. What do you do if you need the right 8 characters of a 10 character string, for example? Usually you need to take the length of the whole string, subtract out the length of the prefix, blah blah blah, it’s annoying. The new leftMinusEnding function is a convenience function that gives you the left characters in the string MINUS the ending N characters. And similarly for the rightMinusStarting function. This will be a simpler way to deal with stripping a prefix off that’s a certain length. So let’s say the member name in your outline is Loc_1000 and you just need the “1000” for your query. You could do #rightMinusStarting(#Location, 4) to get just ‘1000’. And if the string was 1000_Loc then you could do #leftMinusEnding(#Location, 4) to get ‘1000’. Simple but useful.

#monthToTwoDigits function

Wait a second, don’t we already have this? Sorta. This new function with a shorter name is locale aware. This should come in handy for people in German, French, and any other locales to be able to translate month names in your language to a digit. Also, this function combines translates for both short month names and long month names. So let’s say the outline contains “März” (German for the month of March). We can now use the new function like this:

#monthToTwoDigits(#Time, 'de')

In this case I’m assuming that #Time is your time dimension with month names in it. “de” is the locale code for German (Deutsch), so this function will return a value of ’03’. Not that this function as with all others returns a string value, but you can use it numerically.

DataTables

The “DataTables” library is now used to make the formatting of the table even nicer.

Paging is back!

The paging functionality is leveraged from the DataTables functionality in order to provide paging. Note that paging is NOT multiple requests to the database to get the rows needed – Drillbridge always executes a query that returns all rows and the paging that occurs is entirely within what the web browser shows. Paging is a per-report option that can be on or off.

Better performance with tons of rows

The code that generates the table itself has been rewritten. I did a lot more testing with larger datasets and couldn’t believe how much it could bog down with lots of rows. I did some testing with a 600,000 row result set and in my case the data itself takes 29 seconds to pull from the database server. Before, the table would take ages to show up, if at all. Now it renders in a second. There are a few performance issues that you run into in the web browser with this much data, but that just is what it is.

Towards 1.3.3

Like I said, this release has a little less than what I wanted – I still have some cool things in store for subsequent releases, but philosophically I would like to release early and release often. So instead of doing so much work that it takes an extra month or two and then is a bigger change/version, I’d like to do incremental releases. For those of you providing feedback on the forums and email, thank you again so much. I am still tracking every single suggestion that has been made and still plan to address those items when time permits. In the coming weeks I’ll get the development plans/roadmap out and more public so you can see what’s in store, but for now just keep that feedback coming and let me know if you hit any snags.

As always, Drillbridge is available in the downloads section.

End of the road for EIS, start of the road for Drillbridge

Essbase Integration Services (more commonly referred to as EIS) has been officially end of lifed. I have always been a huge EIS fan since I first learned about it, and can’t help but feel a little nostalgic about my early days with it. It was even the basis of a number of my early blog articles going all the way back to 2009 or so, and to this day those articles remain some of my most popular, if only because there are precious few articles on EIS out there.

Most of you readers are probably familiar with EIS and its position in the greater Essbase landscape, but for those who aren’t familiar, here’s a rundown: EIS is can create and update Essbase outlines and data using data stored in a relational database. Don’t be fooled into thinking this is just an Essbase load rule that is pointed to a SQL table. EIS is a veritable Swiss army knife in terms of building outlines, with much flexibility with generating the levels, parent/child builds, setting member properties (formulas, UDAs, consolidation operator), and then loading the data.

EIS really shines when you have a well-designed database schema to use as your basis: primary keys, foreign keys, proper data modeling, and so forth. This might seem pretty obvious but the fact of the matter is that many of the environments I have seen using EIS have implemented it with a poorly constructed data source. EIS still works in this scenario, of course, but sometimes it’s just not as great.

You may already know that Essbase Studio is the successor (perhaps more spiritually than technically) to EIS, in that it provides the ability to create cubes/outlines and load data from relational tables. Essbase Studio improves upon EIS in many ways, but also significantly changes things around. I am an expert with EIS but by no means an expert with Essbase Studio (just to provide a somewhat narcissistic reference point for how much of your EIS knowledge might transfer over to Studio).

One of the big things that EIS and Studio bring to the table is the ability to implement drill-through. So perhaps you’re loading some transactional data that has been consolidated somehow, implementing drill-through with EIS/Studio enables you to provide the ability for users to see a number in the cube and then drill through to the individual rows that make up the value for that cell.

This drill-through ability is one of the bigger use cases for EIS/Studio, in fact, it’s such a compelling feature that I have seen a number of environments that have done a skeleton EIS/Studio implementation so they could get drill-through, but then keep managing the outline with EAS and use their normal automation. I have seen and used both HAL and ODI to populate metadata tables for EIS/Studio to use in these instances.

That all being said… Don’t build a pretend EIS/Essbase Studio environment just to get drill-through.

If the only thing you want from EIS or Studio is its drill-through abilities (in other words, you wouldn’t otherwise have relational tables to source data from), then Drillbridge is an incredibly compelling alternative.

Drillbridge, as I have extensively written (maybe I should call this Jason’s Drillbridge Blog), is a drop-in solution for drilling from Essbase to any relational data you have. Drillbridge works with SQL Server, Oracle, DB2, MySQL, and should work with any database for which a Java driver exists (hint: practically every database out there).

I’ll be writing more about this in the coming weeks, but besides being a good solution in its own right, Drillbridge could significantly improve and simplify the architecture and automation of any environment with a “fake” EIS/Studio setup. In other words, if you are feeding data to relational tables only because you have to in order to get the EIS/Studio outline “overlay” to work and provide drill-through, you could instead drop the use of EIS, the automation for extracting dimensions/populating tables/updating the outline, and instead just drop in Drillbridge and create a mapping from your metadata (outline) to your relational data.

For the record, I like Essbase Studio and this is nothing against it, particularly when solutions that involve it are constructed properly. But this particular use case is just such a slam dunk for Drillbridge that could improve numerous environments I’ve seen, I just have to point it out, especially in light of EIS being end-of-lifed.

Drillbridge 1.3.1 available for download

Just a quick post. Like the subject says, a new point release of Drillbridge is now available in the normal downloads location. Drillbridge continues to receive polish and fixes. Nothing too earth shattering this time around, just more DRILL-THROUGH AWESOMENESS:

  • Queries can now be 8000 characters instead of 4000
  • Custom connection settings to issue ALTER or SET commands on your database if needed
  • Workflow around connections and reports improved
  • Drill-through deployment improved for Planning and Financial Reporting
  • Duration of report execution now logged! (Check out how long those SQL queries are taking)
  • Various bugs fixed
  • Polish, polish, polish

I’m really happy with this release. The codebase is looking really solid, things are working great, feedback from users has been ROCKIN (thank you Peter, Sebastien, Julien, and many others). Drillbridge is being used in French, German, Russian, and English-speaking countries, much to my amazement. I haven’t spent too much time on internationalization (making software work well in different languages and locales) but Drillbridge has some cursory support for formatting numbers and dates in a nice way, so that’s a good start. Down the road I’d like to offer Drillbridge in various languages – all in good time.

Version 1.3.2 is officially underway. As with this release, it will offer improvements, fixes, and enhancements. I have a list of about 20 things to improve that I will slowly be working through. I’ll talk about the improvements in future posts but in general they will center around enhancements to make creating drill-through reports easier, improvements to performance, aesthetics, and a couple of other tricks I have up my sleeve…

Thanks again to the literally DOZENS of people out there offering suggestions, offers to help, feedback, kind words, compliments, and more. Much to my amazement this tool has gone from a proof of concept to a labor of love to an actual bonafide deployable tool that plugs a little or not so little gap in the current Hyperion ecosystem.

Keep calm and… drill on.