Wednesday, 20 May 2015


TM1 REST API is a great enhancement for TM1.
You can develop lots for own applications using this API. And most beautiful thing is they can be cross TM1 servers! The current TM1 interfaces(Perspectives and Architecture), I have to say, are ugly and difficult to use, especially when you want to exchange data between two servers.
I know tm1runti command and already developed TI processes to transfer data between servers.
TM1 REST API provides a new way to communicate with TM1 server.

I plan to use this to develop a new tool for managing chores, migrating objects, etc.

Looking forward to hoping IBM to make this API stronger to replace the original out-of-date API.

Sunday, 1 February 2015

Tips for installing Cognos 10.2 64-bit on Windows 7 64-bit

1. Make sure you install all supported software which is listed by IBM report, especially for JDK, version of content store DB and web servers etc. Latest software will cause some unexpected errors. E.g. dynamic query service can't be enabled when using JDK 8 on Cognos 10.2.

2. Make sure all software you installed is in same language, especially for Cognos server itself. Better to have English as default language by changing this setting
IBM Cognos Configuration -> Opertation -> Edit Global Configuration -> General -> Server Language Env = en if you see this error in the cognos server log. "CBSServiceStatusUpdater reached time limit, final status is 2"

3. Make sure Oracle character set is AL32UTF8 and language in AMERICAN if you use Oracle as content store. You can use DBCA to drop or recreate DB and grant DBA to content store user.

4. Follow the links below to finish installation and configuration.

5. Allocate more RAM to Java Virtual Machine if see this error in Event Viewer.
"Could not create the Java Virtual Machine"

6. If you see "QE-DEF-0368" when using FM to connect any source for publishing. Check the link below.

Saturday, 15 November 2014

TM1 and MySQL Workbench

If you have chance to work with TM1 and MySQL, you probably will use MySQL workbench and it is really very handy. However, if you copy SQL directly from workbench into TI SQL window, you will have some problem, especially when you are on Windows platform. You will find that SQL in TI is truncated into some limitation automatically for some reason after you reboot the server.

See the following explanation,
How MySQL workbench add invisible char into the end of each line (only LF, which is Unix way)

After copying same SQL into Notepad++ and how Notepad++ display the end of each line (CR+LF, which is windows way)

And the SQL window in TI only recognize the common Windows way of displaying end of each line, which is CR+LF. If you copy SQL directly from workbench into TI window, at first, you won't see any problem and that SQL will be only displayed into one line. Once you reboot your server, TI would automatically truncate the whole SQL at the first place of LF. That caused the failure.

For anyone who is not familiar with CR or LF. Read this,

CR an LF are control characters, respectively coded 0x0D (13 decimal) and 0x0A (10 decimal).
They are used to mark a line break in text file. A you indicated, Windows uses two characters the CR LF sequence; Unix only uses LF and MacIntosh CR.
An apocryphal historical perspective
As indicated by Peter, CR = Carriage Return and LF = Line Feed, two expressions which have their roots in the old typewriters / TTY. LF moved the paper up (but kept the horizontal position identical) and CR brought back the "carriage" so that the next character typed would be at the leftmost position on the paper (but on the same line). CR+LF was doing both, i.e. preparing to type a new line. As time went by the physical semantics of the codes were not applicable, and as memory and floppy disk space was at a premium, some OS designers decided to only use one of the characters, they just didn't communicate very well with one another ;-)
Most modern text editors and text-oriented application offer options/settings etc. that allow the automatic detection of the file's end-of-line convention and to display it accordingly.

Wednesday, 5 November 2014

TM1 on Linux

A few things to notice:
1. When run issetup, you might see some lib files are missing. Google and find them put them into /usr/lib with required file names. They are all in 32-bit if you are installing 64-bit TM1.
2. Don't trust GUI. It somehow doesn't work and can't see the error behind it.
3. To bring up the sample, you need to check tm1s.cfg first to make sure it is in Unix format.
4. Use command to start your TM1 server and to stop it. They may ask for missing lib files as well. Google and find them put them into /usr/lib with required file names. They are all in 64-bit if you are installing 64-bit TM1.
5. To test ODBC, you need to setup unixODBC and corresponding linux ODBC drive for your DB.
6. Once ODBC is successful, you still need odbc_test.exe to testify your ODBC connection in TM1. It may also ask for missing lib files as well. Google and find them put them into /usr/lib with required file names. They are all in 64-bit if you are installing 64-bit TM1. They should match your TM1 and OS versions for 64-bit or 32-bit. DB version is not relevant here.
7. Setup ODBCINI environment variable and put ODBCLibraryPath into your tm1s.cfg.
8. All TM1 clients should still be in windows platform. You have to setup them in other machines.
9. All in all, in Linux/Unix, better to use command all the time, they are you best friends and can tell you where your errors are. Have fun in TM1 on Linux/Unix!

Monday, 14 April 2014

Olapedia - TM1

The following is a wiki website for TM1. It contains lots of fundamental concepts. It is a good start point if you are interested in it.

Wednesday, 31 July 2013

A Better TM1 Monitor Tool

Compared with traditional TM1 Top, in 10.1, IBM issued a new web-based TM1 monitor tool - TM1 Operations Console.
It provides the basic server monitoring functionality provided by the TM1Top utility with some important additions:
  • The Cognos TM1 Operations Console can monitor multiple Cognos TM1 servers at the same time.
  • The Health feature allows for instant feedback on the current state of servers.
  • Filtering helps highlight specific states for multiple servers.
  • Sorting allows administrators to quickly identify which servers are in specific states.
  • The Cognos TM1 Operations Console can use Scheduled Logging to monitor activity offline.
The following sample show multiple servers being monitored in the Cognos TM1 Operations Console:

It is one of default components if you intall TM1 package and default web server is Apache Tomcat provided with Cognos TM1. Here is the location: Select and install the Web Application Tier > Cognos TM1 Operations Console component.

Use the following set of steps to install it (IBM Link for detailed installation steps):

According to my practice, the first one is pretty important. Please make sure you have done that otherwise the Admin Hosts you added would be "None of the servers are contactible". After that, restart your TM1 Application Server to make it effect. 

If you already have some groups, you can just skip the third step to use existing ones. And then update OpsConfig.xml to add your admin host, tm1 server and group name. You can just add one admin host because from there, you can also monitor other admin hosts. (But make sure all admin hosts are listed in this server's tm1s.cfg file.) 

Then go to your IE, type http://server_name:port_number/tm1operationsconsole, this address can be found in your TM1 Application Server.

After adding Operation Group -> Admin Host -> Server, you can start to monitor all your TM1 servers in one window. It is pretty convenient and no need to configure TM1 Top one by one.

One more thing, to kill one process, just right click the line for that ID and kill it.
Have fun and that makes our life easier!

Sunday, 23 June 2013

Basic TM1 Tips for Green Hand

1.    When presenting views to business users, make sure you create the view in all detailed levels as default and tick “Automatic Recalculation”.
2.    You can create a “Picklist” in dimension’s attributes which allows users to select values from drop-down list.
3.    Use “Driver” cubes to centralize all rates, values etc and use DB function in rules to refer to it.
4.    Don’t forget to consider maintenance when designing cubes.
5.    Prefer to use weight to do addition or subtraction instead of rules for consolidations.
6.    Dimension order should be from smallest/sparsest to largest/densest and measure dimension would be the last one when creating cubes.
7.    Always add roll-up level for dimensions.
8.    If dimensions are nested, you can’t use filter in cube viewer.
9.    Think about the following when building a cube
       a.    Purpose of the cube
       b.    What the measures?
       c.    What else dimensions do I need?
       d.    Build
       e.    Create default view and format
       f.    Write rules/feeders if necessary and test
       g.    Load
       h.    Publish if necessary
10.    When an element belongs to a group in dimension, if you delete it, TM1 just takes it out from the group and put it in the last. Delete it again if you really don’t need it.
11.    Alias is useful for displaying alternative names but also can be used for loading. E.g. you have staff name in the dimension and also use alias for staff number. TM1 would firstly search for staff name and then look for staff number in alias.
12.    Set order each time when creating dimension before saving it.
13.    When you see “#N/A” in cubes, it would be either circular reference or dividing by zero.
14.    Dimension order is very important.
15.    As long as you write a rule for a cube, performance engine would be turned off automatically. So you need remember rules and feeders are combined together.
16.    Under feeding or only writing “SKIPCHECK” would lead to zero consolidations.
17.    Over feeding or only writing “FEEDERS” could work but still have slow performance.
18.    When you have DB functions in rules, you need write feeders in the referenced cubes and use DB functions to feed it back to the source cubes.
19.    Whenever you open a view in a cube, TM1 would execute rules first and then aggregate cells for consolidations.
20.    Addition and subtraction need feeders for all elements in the formula.
21.    Multiplication and division only need feeders for the sparsest element depends on business rules.
22.     When using wizard for DB function, remove anything in the field before clicking on subset button on the right.
23.    Use “Trace Calculation” or “Check Feeders” in views when you see zero for consolidations and values for detail levels.
24.    Use curly braces to feed multiple elements to same target cell.
25.    Rule sequence should be from specific to generic.
26.    Use DB function in rules to test a string.
27.    You can use custom format sometimes such as 0.00”%”.
28.    Use UPPERCASE for all rollup elements or consolidations.
29.    Active form can be drilled down, formatted quickly and have dynamic subset on rows.
30.    Whenever you don’t save data when exiting the server, TM1 would generate *.REJ file to backup and you can use TI process to load it for recovery.
31.    You can create TM1 server by shortcuts or windows service by using different parameters.
32.    Attribute and lookup cube can be useful but only admin can modify attributes.
33.    When specifying values for leaf cell and consolidation cell, you need to write them down in one formula.  E.g. [‘Price’] =:N .... ; :C 0;
34.    When creating dimension, usually we need to use TI process to create them from files dynamically and further create dynamic subset from them as well. These processes would be scheduled automatically.
35.    When using TI to create dimension, you should just put one variable as “Element”. For loading cubes, they have many.
36.    Make sure you use your own view such as “TIXXXXX” to copy data within cube or between cubes.
37.    The security applies according to this order. Cube->Dimension->Element->Cell
38.    No need to add feeders for string elements and they are only for numeric elements.
39.    You can use “Re-order dimensions” or “Load on Demand” to improve performance.
40.    You can use relative data spreading functions to reference data from other cubes but make sure referenced cube has same dimensions on column.
41.     When replicating, you need to careful about modification on same cells on different servers as only the source server takes precedence and change from other servers would be overwritten. The replication is merging changes from all different servers and bi-directional.
42.    When copying data in one cube for different views, you can just use a new variable in TI to specify different element such as “Final Version” and the original one should be ignored.
43.    When Cognos Framework Manager is connecting to TM1, you need to specify which dimension is measure in cube properties first.
44.    For lock permission, only admin can unlock it.
45.    Six permissions have precedence.