Page 1 of 1

SUBIX function

Posted: Thu Jan 21, 2010 8:26 pm
by Martin Ryan
I thought it'd be a good idea to raise the SUBIX in this forum in case it's monitored by our IBM friends as it's come up for me again today and has been mentioned a couple of times in the old forum, including at least one formal enhancement request from Duncan T back in 2005.

John's got his undo spread, surely the subix is next on the list!

Martin

Re: SUBIX function

Posted: Thu Dec 18, 2014 2:41 am
by Alan Kirk
Martin Ryan wrote:I thought it'd be a good idea to raise the SUBIX in this forum in case it's monitored by our IBM friends as it's come up for me again today and has been mentioned a couple of times in the old forum, including at least one formal enhancement request from Duncan T back in 2005.

John's got his undo spread, surely the subix is next on the list!

Martin
Just for reference I logged this on the IBM RFE site as 63581.

Description
For over 10 years the user community has been calling for a SubIx function in TurboIntegrator which operates similarly to the DimIx function.

The principal need for this is to ensure that;
(a) When a subset is dynamically created from a data source; and
(b) That data source may have multiple occurrences of an element in different rows; then
(c) The resulting subset will contain an element name once and once only.

At present this can only be achieved by kludgy and time consuming workarounds like iterating the entire subset to check for the existence of the current row's element, or writing the elements into a temporary dimension where we know that the list will be unique, and then creating the subset from that dimension.

Since an element can in fact occur more than once in a subset the SubIx function would probably need an argument to specify which occurrence of the element that you're seeking and return the index accordingly.

At a pinch, if a SubIx function is not possible then a SubsetElementExists function which returns 1 if the element is ANYWHERE in the subset and 0 if it is not would at least overcome the most common problem associated with the absence of this functionality.
Use case
Rather than offer one of my own I'll refer to one that Duncan Turner submitted to Applix on 19 May 2005 (coming up to 10 years ago), for users the world over have had the same problem for the same amount of time:

I am building a subset from a repeating source file e.g. multiple rows contain the same element.

When building a dimension, no duplicates are allowed and so the build is clean. However, when building a subset, each element is inserted one-for-one, resulting in a subset with as many elements as the source has rows.

In order to get a "clean" subset, I am having to either build a temp dimension and then a subset, or loop the subset to check for an element's existence.

If SUBIX were available, I could perform the usual IF(SUBIX(dim,elem) > 0 type of argument which would save time and effort.
Business justification
It is ridiculous that we need to be spending time and effort to create workarounds to TI language deficiencies which SHOULD be solved with a single function call. The time taken to overcome missing functionality is not massive in any one individual case but it adds up, repeatedly. The SubIx problem is a very common one, which means that the total amount of time spent by TM1 administrators in working around it, and TI processes in executing unnecessary loops or temporary dimension creation, rapidly runs into days, weeks, months.

More attention needs to be paid to the underlying language structure so that we can get to where we need to faster.

Re: SUBIX function

Posted: Thu Dec 18, 2014 1:00 pm
by jim wood
+1 from me. Hopefully that will at least mean something to big blue?