IBM has rebranded IBM Cognos TM1 to IBM Planning Analytics however the server is still referred to as the “TM1 Server”, hence references to TM1 in the rest of the article.
Running a full TM1 Save Data to commit in-memory changes to disk locks up the entire model and depending on the size and number of changes can take anywhere from a couple seconds to an hour.
To reduce the time and the locking, the TM1 TurboIntegrator (TI) function CubeSaveData can be used instead for each of the cubes in the model and run in parallel to cut an hour into a couple minutes depending on the model.
It is important to note that if your entire model only consists of one or two cubes this is not going to give you a huge performance gain but if you have many cubes and models in one TM1 server this could be tremendously useful.
This is also a great introduction to the TM1RunTI utility and the use of parallel processing in TM1.
IBM has a helpful guide for setting up parallel processing using TM1RunTI but if you are using local security and don’t mind your processing containing the full command you can follow the steps below instead.
To set up parallel processing follow this IBM guide:
https://www.ibm.com/support/knowledgecenter/en/SS9RXT_10.2.2/com.ibm.swg.ba.cognos.tm1_turb.10.2.2.doc/c_tm1_op_usingtm1runti.html
Simple Steps:
- Create Cube Save Data process with Cube as a parameter.
- Create a pCube parameter
- In Prolog place CUBESAVEDATA (pCube)
- Create a pCube parameter
- Set up parallel processing
The TM1RunTI Command consists of multiple parts that can be stored in a Global Variables cube for ease of use.
- Admin Host
- Server Name
- TM1 Run TI directory
- CAM Namespace (if not local security)
- Admin User
- Admin Password (if not using a password file and key)
- Password File (if not using password)
- Password Key File
- Process Name
- Any parameters associated with the process
- Create a Save Data process that cycles through all the cubes, and launches the Cube Save data process for each one. Example of a PROLOG tab on my local machine:
Notice that the EXECUTECOMMAND function is called with a second parameter of 0. This instructs the TI process to continue to the next line of code without waiting for the current line to complete.
This example uses local security and passes along the “admin” and “apple” username and password. Here the vPath is the location of the tm1runti.exe file
vPath = ‘C:Program Filesibmcognostm1_64bin64tm1runti.exe’
The Command follows the following format if using password and local security
‘”‘ | sRunTIDir | ‘” -adminhost “‘| sAdminHost | ‘” -server “‘| sServerName | ‘” -user ‘ | sAdminUser | ‘ -pwd ‘ | password | ‘ -process ‘ | ProcessName | ‘ parameter=’’’ | pParameter;
The Command follows the following format if using Password File and Key
‘”‘ | sRunTIDir | ‘” -adminhost “‘| sAdminHost | ‘” -server “‘| sServerName | ‘” -user ‘ | sAdminUser |’ -CAMNamespace ‘ | sCAMNmspace |’ -passwordfile ‘ | sAdmin_pwdfile |’ -passwordkeyfile ‘ | sAdmin_pwdkeyfile | ‘ -process ‘ | ProcessName | ‘ parameter=’’’ | pParameter;
***Please note that copying and pasting the above will cause some issues with quotes – please see this text file if you want to copy and paste this example.
- Run and monitor TM1 Operations Console or log files to check that multiple processes fired.
- Troubleshoot by using ASCIIOUTPUT on the execute command line to check the formatting (the quotes can get tricky).
- Create chore to run.
- Schedule the Chore to run. If you are not sure how often is appropriate, we suggest a minimum of twice daily.