Are
you at the helm of maintaining a very large TM1 model? Or did you
inherit a TM1 model and want insight into the system? Say you have a
new person on the team and he/she is not sure which process creates what
dimension!
Well, the below post will help you make your job little easier, at least when it comes to dimension creation/updation. We are going to leverage the }DimensionAttributes control cube for a neat trick to map dimensions with their create/update processes. This control cube stores attributes for all the dimensions that appear in your TM1 server.
Let’s see, a large TM1 model includes
several dimensions – most of which are created through TI processes.
This is true in many implementations, since metadata for your model is
sourced from external systems, which feed into TM1. At the end of day,
your Architect will look like this –
Right click on “Dimensions” -> Choose “Edit Attributes“
From “Edit” menu, choose “Add New Attribute“
Type “CreatedBy” as attribute name of Type “Text” and click OK. Your screen should now look like:
You will see the newly created attribute along with others that currently exist on your system. Click OK. Go back to Architect
When we created a new attribute “CreatedBy” for the dimensions, IBM Cognos TM1 behind the scenes updates a control cube }DimensionAttributes.
You can choose to display control objects in your Architect and see how
the cube looks like. All that is now left, is to modify your dimension
creation process and add a small piece of code in the Epilog. To
illustrate this, I will use a text file as source and create a dimension
“A_Sample_Dim”. Text file has following data in it:
ElemName, ParentName
Direct, Sales
Indirect, Sales
PSO, Sales
Sales, TOTAL ORG
Maketing, TOTAL ORG
Engineering, TOTAL ORG
GA, TOTAL ORG
Finance, GA
IT, GA
Administration, GA
Create a new process to use this as source for your Turbo Integrator process and choose appropriate fields as shown below:
Go to Variables tab and in “Contents” choose as “Other” for both the variables. Below is the code in various tabs
PROLOGvs_DimName = ‘A_Sample_Dim’;DimensionCreate (vs_DimName);
IF (DimensionExists (vs_DimName) = 0 );
DimensionDestroy (vs_DimName);
ENDIF;
METADATADimensionElementInsert (vs_DimName, ”, ElemName, ‘N’);DimensionElementComponentAdd (vs_DimName, ParentName, ElemName, 1);
DimensionElementInsert (vs_DimName, ”, ParentName, ‘N’);
This
is the normal dimension creation process that most developers follow.
As mentioned before, we will need to add a small piece of code in the
Epilog with following contents in it:
vs_CubeName = ‘}DimensionAttributes’;
vs_TIName = GetProcessName;
CellPutS (vs_TIName, vs_CubeName, vs_DimName, ‘CreatedBy’);
vs_TIName = GetProcessName;
CellPutS (vs_TIName, vs_CubeName, vs_DimName, ‘CreatedBy’);
Save
and run your code. You should now see the value in Architect. This
approach has to be adopted for all the dimension creation/updation
process.
Closing Thoughts:
- Approach to populate the }DimensionAttributes cube to note the processes that build your TM1 model dimensions will go in a long way, for your ongoing support
- This approach need not be limited to process creation alone, you could extend this to various attributes that you could think of, on a given dimension. For ex: owner, updation frequency, source etc. All you’d need is additional attributes to capture them
This was an excellent blog Cognos Tm1 Online Training Hyderabad
ReplyDeleteVery Nice article,Thank you..
ReplyDeleteKeep Updating...
Cognos TM1 Online Training