Thoughts, ideas and solutions from a few EPM consultants.

Python Tools

I've been playing around with python/jython a lot lately and have thrown together a small set of tools. These tools can be found on GitHub. Below I'll try to explain the purpose of each. This may end up being a mutlipart post as I plan to add to the repo when I find new useful ways to use python in EPM.

bulkreplace.py

This script does muliple replacement on a file using a set of delimited mappings. The default delimiter for the maps is tab.

Parameters:
-f, --file		Essbase extract file (required)
-m, --map		Mapping file for replacements (required)
-d, --delim	 Delimiter used to separate source and target in map

Flags:
- h 			Help

Example: python bulkreplace.py --file=test-data\replace-source.txt --map=test-data\replace-maps.txt

essbase-dataextract-parse-members.py

Extracts all the member names that appear in a non column format essbase extract file (the only format currently suppored in ASO.) This can be especially useful for finding problems before load when compared to a list containing members names in the outline.

Parameters:
-f, --file     Essbase extract file (required)
-o, --output   Output file

Flags:
-h             Help
-s, --stats    Include statistics on number of occurrences in file

Example: python essbase-dataextract-parse-members.py --file=test-data\essbase-extract-data.txt

essbase-xml-otl-compare.py

This assumes that the user is using a version of EPM that supports the MaxL command to export an xml extract of the outline and they know how to use it. When run it creates a "diff" report between two xml outline extracts. Currently it only compares parent, child, consolidation operator and aliases for differences but I hope to add member formulas soon. It's been quite useful to me as of late and I have to thank Jake Turrell for the idea.

Parameters:
-s, --source   Source XML File (required)
-t, --target   Target XML File (required)
-o, --output   Output File

Flags:
-h             This Help
-v, --verbose  Creates source.txt and target.txt files

Example: python essbase-xml-otl-compare.py --source=test-data\source-outline.xml --target=test-data\target-outline.xml

Alright that's it for now thanks for watching ;)