Page 1 of 1
Merge all elements into one dimension
Posted: Wed Dec 31, 2014 6:15 pm
by elee123
Hi all,
Is it possible to get all elements in each dimension and put them in one dimension?
If so, how to do it?
Re: Merge all elements into one dimension
Posted: Wed Dec 31, 2014 6:43 pm
by declanr
You can, not sure why you would want to. It would help if you elaborated further with your questions as to the business purpose so that people would be better able to help you.
See a recent post about merging 2 dimensions into 1... the same concept applies for all dimensions you would just need to extend it... I'm also sure that the search box would provide more similar posts:
http://www.tm1forum.com/viewtopic.php?f=3&t=11226
Either way a simple loop of the }Dimensions with another loop inside to cycle the dimension would suffice. Keep in mind that the same element name may exist in multiple dimensions as such you may want to build a cube that flags where they are used e.g.
Code: Select all
sDimName = '}elements';
sDimDim = '}Dimensions';
sCubeName = '}ElementMapper';
sDimMeasures = sCubeName | '_measures';
If ( CubeExists ( sCubeName ) = 0 );
If ( DimensionExists ( sDimName ) = 0 );
DimensionCreate ( sDimName );
EndIf;
If ( DimensionExists ( sDimMeasures ) = 0 );
DimensionCreate ( sDimMeasures );
DimensionElementInsert ( sDimMeasures, '', 'Flag', 'N' );
DimensionElementInsert ( sDimMeasures, '', 'Type', 'S' );
EndIf;
CubeCreate ( sCubeName, sDimDim, sDimName, sDimMeasures );
EndIf;
iCount = 1;
iMax = DimSiz ( sDimDim );
While ( iCount <= iMax );
sDim = DimNm ( sDimDim, iCount );
If ( sDim @<> sDimName );
iSubCount = 1;
iSubMax = DimSiz ( sDim );
While ( iSubCount <= iSubMax );
sElement = DimNm ( sDim, iSubCount );
DimensionElementInsert ( sDimName, '', sElement, 'n' );
iSubCount = iSubCount + 1;
End;
EndIf;
iCount = iCount + 1;
End;
iCount = 1;
iMax = DimSiz ( sDimDim );
While ( iCount <= iMax );
sDim = DimNm ( sDimDim, iCount );
If ( sDim @<> sDimName );
iSubCount = 1;
iSubMax = DimSiz ( sDim );
While ( iSubCount <= iSubMax );
sElement = DimNm ( sDim, iSubCount );
sType = DType ( sDim, sElement );
CellPutN ( 1, sCubeName, sDim, sElement, 'Flag' );
CellPutS ( sType, sCubeName, sDim, sElement, 'Type' );
iSubCount = iSubCount + 1;
End;
EndIf;
iCount = iCount + 1;
End;
Note that I have just written the above code in the reply box itself as opposed to in a TI editor so it may have some errors that need to be corrected and I have also left you to work out which part/s should go in which tab of the TI (hint it needs more than 1 tab.)
Re: Merge all elements into one dimension
Posted: Wed Dec 31, 2014 7:28 pm
by elee123
I need to get a list of all elements & its attributes from each dimension, then put them all in a cube with the following layout:
DIMENSION NAME ELEMENT Type HTE_DESC HTE_CD WID_Loc WID_LOC_NM
Loc_Seller FTN Simple LOCAL 02 134501 Market China
Loc_Seller USB Simple China 03 17453 Market Africa
Loc_Seller RIT Simple Local 02 186601 Market Europe
CodeBuyer GPS Simple Foreign 12 103541 Market Australia
CodeBuyer UBB Simple China 23 10003 Market Asia
CodeBuyer RMN Simple Local CD 32 134561 Market Canada
My dimension would be DIMENSION NAME and ELEMENT. The rest are measures.