Applied Dimensionality

TM1 Dimension Order

Posted at — Aug 25, 2016
TM1 Dimension Order

A quick note on the decades-old topic of dimension order. In a nutshell: don’t really trust System Order, it ignores changing the last dimension and it’s always the most impactful one. Ignore the rest of the post and move on, carry on if you’re interested in my ramblings on it.

There’s a metric ton of info on dimension ordering for TM1 out there (google yourself, can lend you a shovel to dig out of that), thought I’d write up some of my thoughts on the topic while I wait for another cube to deflate :)

Commonly discussed logic of the dimension ordering is an hourglass (largest sparsest to smallest sparsest then smallest dense to largest dense). Sounds exactly as it should for a complicated and mysterious topic, but thankfully you’ve got the System recommended order to automate dimension selection for you. Unfortunately it ignores moving the last dimension around as it expects it to be a measure dimension that can contain strings and therefore always have to be last.

Therefore the easiest way to check if there’s any optimisation gains at is to manually test placing a largest dense dimension as last (of course if there are no string elements in the cube).

And then you pick the next dimension proceed to do the same if you’re billed by hour, or you just call it a job done.

Any changes to dimension apart from the last one are actually almost negligible, you’d probably have 15% change on all dimensions except the last and 85% in selecting the last one.

Dense dimension doesn’t mean ‘input’ cells, but also applies to stored calculated cells, so if you have a rule driven cube that has a fairly dense dimensions due to your rules&feeders (for example you’re not brave enough for feederless currency conversion), placing such ‘densely calculated’ dimension last will decrease all your stargate views.

My guess (not confirmed, just the way I’d do it) as to why the last dimension is impactful and crucial is that it forms columns of the arrays that are used in TM1 storage:

Well, it just finished reordering, catch you next time :)

comments powered by Disqus