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.
Useful tool! I have probably written this myself a few times in VBS and/or VBA, but keep loosing it.
Thanks Jeff! I also seemed to code several versions over the years too. Oddly, I never got into VBA/VBS too much, despite my humble beginnings in QuickBASIC, back in the day. :)
Thanks for sharing! Would you have any perl version around? If not I guess I’ll code one, not sure it will be as great as yours.
Hi Sebastien,
I don’t have a Perl version lying around. In fact, I haven’t touched Perl in so long that I’m afraid (or perhaps happy…) my Perl skill have atrophied to almost nothing. I do recall however, that the Perl version was quite simple. While this Java implementation is ostensibly ‘complex’ it is useful since it can be easily plugged in to any sort of existing Java program and play nice and serve a role. Not something you could do with a Perl version but the Perl version had the very nice benefit of being only a handful of lines. Literally just loop over the contents of the given file, use a regex to parse the missing member line, and update the value of the member in a hash table. Id you happen to write a version I’d be happy to post a blog article or link to it, thanks!