Page 1 of 1

Creating parameter for time subset

Posted: Tue Oct 09, 2012 7:42 pm
by Jhn18
Hi everyone,

This is my first time using this forum and also my first time writing any TI script. Below is the script I created to export data from a view to a txt file. I got that part down but the issue I am having is that my time parameter is not working, e.g when I pick sometime, my export file still shows ALL months.

This is my script:

#****Begin: Generated Statements***
#****End: Generated Statements****

#This TI Process copies FXRateInput_USD view data and exports it to a CSV file for Reporting to pick up


vCube = 'FX_Rates';
vDim1 = 'SCENARIO';
vDim2 = 'TIME';
vDim3 = 'FX_RATE_TYPE';
vDim4 = 'CURRENCY';
vDim5 = 'CURRENCY_2';


#FXOutPut = CellGetS('D:\TM1\Exports\FXRates\FXRates_Export.txt');

vView = '}FX_Rates_Export_JN';
vSub = '}FX_Rates_Export_JN';


If(ViewExists(vCube, vView) = 1);
ViewDestroy(VCube, vView);
EndIf;

ViewCreate(vCube, vView);


#########Create Scenario Subset
ExecuteProcess('SYSTEM_GenericSubsetCreator', 'pSubName',
vSub, 'pDimension',vDim1, 'pBasis', 'LEAF', 'pElement', pSrcScenario, 'pOverwrite', 'Yes');
#########Create Time

vTimeEl = ATTRS(vDim2, pStartMonth, 'Period');
WHILE(vTimeEl@<>ATTRS(vDim2, pEndMonth, 'Period'));
SubsetElementInsert(vDim2, vSub, vTimeEl, 1);
vTimeEl = ATTRS(vDim2, vTimeEl, 'Next Period');
END;
SubsetElementInsert(vDim2, vSub, vTimeEl, 1);

#########Create Currency Subset
ExecuteProcess('SYSTEM_GenericSubsetCreator', 'pSubName',
vSub, 'pDimension',vDim3, 'pBasis', 'LEVEL', 'pLevel', 0,'pOverwrite', 'Yes');
#########Create To Currency Subset
ExecuteProcess('SYSTEM_GenericSubsetCreator', 'pSubName',
vSub, 'pDimension',vDim4, 'pBasis', 'LEVEL', 'pLevel', 0,'pOverwrite', 'Yes');
#########Create Rate Type Subset
ExecuteProcess('SYSTEM_GenericSubsetCreator', 'pSubName',
vSub, 'pDimension',vDim5, 'pBasis', 'LEVEL', 'pLevel', 0,'pOverwrite', 'Yes');

#########Assign Subsets To View
ViewSubsetAssign(vCube, vView, 'Scenario', vSub);
ViewSubsetAssign(vCube, vView, 'Time', vSub);
ViewSubsetAssign(vCube, vView, 'Currency', vSub);
ViewSubsetAssign(vCube, vView, 'Currency_2', vSub);
ViewSubsetAssign(vCube, vView, 'FX_Rate_Type', vSub);

#########Assign Positions of Subsets In View
ViewColumnDimensionSet(vCube, vView, 'Scenario', 1);
ViewColumnDimensionSet(vCube, vView, 'Time', 2);
ViewRowDimensionSet(vCube, vView, 'Currency_2', 1);
ViewRowDimensionSet(vCube, vView, 'FX_Rate_Type', 2);
ViewTitleDimensionSet(vCube, vView, 'Currency');

#########Set View Parameters
ViewExtractSkipZeroesSet(vCube, vView, 0);
ViewExtractSkipCalcsSet(vCube, vView, 1);
ViewExtractSkipRuleValuesSet(vCube, vView, 0);

#########Set Datasource
DatasourceNameForServer = vCube;
DatasourceType = 'VIEW';
DatasourceCubeview = vView;

Re: Creating parameter for time subset

Posted: Tue Oct 09, 2012 10:40 pm
by Christopher Kernahan
Hi there,

Welcome to the forum and good on you for getting stuck into TI.

Are you trying to add all the time periods between the start and end point? If so, you're better off using a numeric attribute and doing an ATTRN comparison, rather than the string comparison. If you're just trying to add a single period, you can probably dispense with the WHILE statement.

Either way, I think your problem is with this part of your code;

Code: Select all

vTimeEl = ATTRS(vDim2, pStartMonth, 'Period');
WHILE(vTimeEl@<>ATTRS(vDim2, pEndMonth, 'Period'));
SubsetElementInsert(vDim2, vSub, vTimeEl, 1);
vTimeEl = ATTRS(vDim2, vTimeEl, 'Next Period');
END;
You need to use the WHILE statement to scan through the elements in the dimension - TI doesn't know that you want to loop through this dimension unless you instruct it to.

In TM1 TI the syntax for what you are trying to do here should be closer to this;

Code: Select all

iLimit = DimSiz( Dimension );
iIndex = 1;

WHILE( iIndex <= iLimit );
            IF ( TEST );
                     ACTION IF TEST IS TRUE;
            ENDIF;
            iIndex = iIndex + 1;
END;
EDIT: Slight change to code syntax.