More fun from the mad scientist in the labs: release of Hyperion Rejected Record Summary 1.0.0

In my ongoing effort to clean up some of my past creations and make them available to anyone that wants to use them, I am releasing Hyperion Rejected Record Summary. RRS is a small Java library/command-line program that analyzes one or multiple rejected record files (from a Hyperion data load) and provides stats on them.

I have used something similar in the past as part of an automation process that summarized anything that didn’t load to a cube and emailed it to me for further analysis. That’s exactly what this does.

Further, while this can be used as-is on the command-line, it is also fashioned into a tight Java library with a clean API and no dependencies that can be embedded into your own programs or a servlet. You could even call this from ODI to summarize a reject data file as part of an automation process.

For example let’s say that you have the following data that doesn’t load:

\\ Member Ac.0170001 Not Found In Database
09	0170001	900	11	.00	

\\ Member Ac.0170001 Not Found In Database
09	0170001	904	11	.00	

\\ Member Ac.0170010 Not Found In Database
09	0170001	905	11	.00	

\\ Member Ac.0170012 Not Found In Database
09	0170001	906	11	.00

Then in total you have 2 records rejected because of Ac.0170001 and 1 record rejected for each of Ac.0170010 and Ac.0170012. The rejected record summary/class will tell you that there were 4 total rejected records, 3 members causing this, that 50% of your records were rejected because of the top 1 most rejected record, and a host of other stats.

The summary class acts as a DSL (domain specific language) custom to Essbase that can analyze these stats and report them in a meaningful fashion. Additionally, not just files can be analyzed — anything you can get into a Reader or InputStream is fair game, in case you happen to store your data in something besides a file or pull it down via other means.

As always, this software is free and open source (Apache 2) and available on Github. See the RRS page for more info and a link.

Hyperpipe updated (1.0.1) plus another tidbit

Due to all of my testing in H2 without a password I forgot to re-include the password parameter during execution — this should now be fixed. You could have still included it directly in a JDBC URL but it’s a little more convenient to just use a parameter. GitHub repository is here and has a link to the latest download jar.

In other news, my good friend/colleague Cameron Lackpour (link in sidebar) forwarded on a message about Hyperpipe to the fine folks at Oracle for their consideration, at least in terms of being a proof of concept. So who knows, maybe good things will happen. :D

New theme!

I’m more of an RSS guy myself when it comes to blogs, but I’ve been wanting to fill out some of the content here for awhile and the old theme was getting a little dated. I am very proud to roll out a shiny new theme to freshen things up! Over time I’ll be adding more pages for my custom projects and whatnot.

Pump data into an Essbase cube directly from a relational database with just Java and no load rule using Hyperpipe

Kind of a wordy blog title. There is plenty of more information on the Github project page.

Based on a conversation with Cameron Lackpour, I wrote a small utility that can move data from any JDBC data source to an Essbase cube. You don’t need MaxL, a load rule, ODBC, ODI, or any of that stuff.  I mean, you might want to use those things instead of this odd little one-off utility, but if you like living on the edge you can give this a try.

Hyperpipe works by piggybacking off some functionality that is already in the Essbase Java API. Craft a SQL query in a particular format and you can load up an Essbase cube without having to make a load rule or jump through too many other hoops. This could be useful in some situations. Hyperpipe is believed to work with all Essbase versions 9.3.1 or higher but has not been extensively tested. Hyperpipe is an open-source project released under the liberal Apache Software License — a business-friendly license that you can do pretty much anything you want to.

Please try it out if you’re interested and let me know if you have any questions, comments, suggestions, or issues.

Happy cubing!

Install Essbase Java API (jar) files as a local Maven artifact

Maven is a comprehensive build system for Java projects. A lot of people, including myself, have a love/hate relationship with Maven. The reasons for this relationship can be discussed at another time. In any case, used judiciously, it can make managing dependencies in Java projects much easier than handling them by hand.

Eclipse has pretty good Maven integration. It’s possible to setup a new project and browse for dependencies and add them automatically to your project. Everything just works. I develop quite a few Java applications that rely on the Essbase Java API, so I have imported the Essbase jar files to my local repository (since they are not available from a central public repository) to make development a breeze.

Here’s how you can do the same. First, you need to go get your Essbase jar file. These are installed on the Hyperion server. You might have to search around a little bit since the directories seem to change from release to release, but in the case of this stock Hyperion 9.3.1 server (with Hyperion installed in C:\Hyperion) they can be found at C:\Hyperion\AnalyticProviderServices\lib.

Here’s what the directory looks like on one of my machines:

Hyperion Java lib folder screenshot

Hyperion Java lib folder screenshot

Right now we’re just interested in the ess_japi.jar file. We’re going to import this in to our local machine’s Maven repository. This assumes you have Maven installed locally, of course. If not it’s pretty straightforward. Just Google around and all will be clear.

Maven is very particular about the versions of everything. It allows you to store multiple versions of files. This means that our single repository can store the files for Essbase 9.3.1, 11.1.1.1.0, 11.1.1.3, and so on, all next to each other. Since we’re importing this resource manually we are going to tell it the version. First though, let’s rename this local file to something more consistent with Maven naming conventions. Let’s rename it from ess_japi.jar to essbase-japi-9.3.1.jar (since this is a file from a 9.3.1 server). Change it accordingly for other versions. If this were 11.1.1.3 then we would make it essbase-japi-11.1.1.3.jar. Note that Maven “prefers” a versioning scheme of major.minor.revision but not all software (particularly Essbase) adheres to this, so we’ll do our best.

So now we have essbase-japi-9.3.1.jar. A simple command line will import this. From a command prompt in the same folder as the jar file, execute this command:

mvn install:install-file -Dfile=essbase-japi-9.3.1.jar -DgroupId=com.essbase -DartifactId=essbase-japi -Dversion=9.3.1 -Dpackaging=jar

Each -D indicates a parameter we are filling out: the name of the file, a Maven group ID (which we’ll decide to make com.essbase), what the name of the artifact itself should be (essbase-japi), the version, and lastly that it is a jar file. You’d think Maven could infer some of this for us but we only have to do this once in a blue moon so it’s not so bad. Maven will copy the file to the local repository. To make it visible from Eclipse you will likely have to rebuild your Maven repository index which is no big deal.

Essbase Jar import success

Success importing Essbase jar file

Now when we are specifying the dependencies for our projects from Eclipse, we can easily browse it by name and add it in to our Maven POM file:

Eclipse Select Essbase Jar Dependency

Eclipse Select Essbase Jar Dependency

Now we’re good to go. We can easily include this artifact in future projects quickly and easily. This is particularly useful if you happen to download the source code for some of my Essbase-related open source projects, which as of late rely on Maven for dependency management.