No matter how much we think we know about TM1, there are always these set of conditions that make you think “what-if there was a better way”??!! For example, not having to write a bunch of codes just to delete the subsets after using it in a Source View Or not writing the same area definition twice. What-if this could be done with less or no coding at all!
This blog and its subsequent part will focus on showcasing few of such many lesser known features in TM1. These little tricks and tips are a step towards better code management and of course peace of mind.
TIP 1. One area definition for two different rules at N and C level
Let’s take an example of Headcount in an Employee (HR Data) cube.
- Headcount is calculated monthly based on on-roll employee count in a particular month.
- However, if we pan-out at an All Months level (as illustrated in the figure below), total headcount adds up from Jan to Dec, which is not a true representation of employee count.
- Correcting this needs a rule to be written at a consolidated level which will pick the headcount from Dec.
- Instead of writing a separate line of rule with same Area definition, different rules can be clubbed and written for both N and C level separated by a semicolon (as illustrated in the figure below).
TIP 2. Error file directory
On any given day, you would hardcode the directory path or fetch it from a cube where the path is stored, this to ensure dynamism and to address issues with regards to data movement from one server to another.
But if you are not using this cube often or for any other purpose, it soon becomes redundant. There is a work around in which use of GetProcessErrorDirectory function offers the path and allows you to log into directory of respective server instances.
A folder inside logging can be created (as illustrated in the example below) and the file directed to that path, so even if/when the code is moved to different server/instance, it still works seamlessly.
Code snippet shows the use of function:
Exporting the exception to the file:
TIP 3. Temporary Subset and Views
In Turbo Integrator (TI), to process a cube view, it is a good practise to delete view and subsets created in Prolog to reduce redundancy. This is commonly done in Epilog tab of process using various functions.
But there is a much simpler way to delete views and subsets without the need of writing code in Epilog.
The screenshot below illustrates a code snippet, highlighted portion is the secret recipe; Adding “1” as the third parameter to functions ViewCreate, SubsetCreate or SubsetCreatebyMDX considers the views and subsets as temporary and deletes them once the process is completed.
This improves overall performance as deleted temporary objects can’t create lock, as a result of which TI doesn’t need to wait for locks to be released before executing a temporary object.
Note: These functions are available from 10.2.2 FP4 onwards.
Hope you would have enjoyed reading this blog as much as I had testing these cool features; stay tuned for Part B of this blog series on Lesser Known Facets of TM1. To Subscribe, visit http://blog.octanesolutions.com.au
You may also like reading:
For more Information: To check on your existing Planning Analytics (TM1) entitlements and understand “how to”, reach out to us at email@example.com
Octane Software Solutions is an IBM Registered Business Partner specializing in Corporate Performance Management and Business Intelligence. We provide our clients advice on best practices and help scale up applications to optimise their return on investment. Our key services include Consulting, Delivery, Support and Training.
Octane has its head office in Sydney, Australia as well as offices in Canberra, Bangalore, Gurgaon, Mumbai, and Hyderabad.
To know more about us visit, OctaneSoftwareSolutions.