Thanks guys for the help...I was wondering if i would do this for 1 elements for 2 dimension, I would just probably need to copy the TI for the single element and adjust it base on the new dimension and its related element, right? So I did that....but the process runs okay but its like nothing happens to the cube. I was like thinkng of creating multiple TI to transfer them from 1 dimension to another but I would end up with 8 TI for just this task. Since I have 4 cubes I already have 4 TI for the transfer of 1 element in 1 dimension.
Maybe someone can help me look at the process and see why its running fine but nothing happens for the output...cause for example i inputted data for an element for a specific date, and it ends up being on the wrong element for the wrong date, that would be the purpose of transfering the data to elements in 2 dimensions.
Thanks Wim for the help on this.
PRAMETER:
pSourceElement
pTargetElement
pSourceElementDate
pTargetElementDate
PROLOG:
Code: Select all
## A. Explicit constants
vCubeName='worksheet';
vSourceViewName='Source';
vTargetViewName='Target';
vSourceSubsetName='Target';
vTargetSubsetName='Source';
pDimensionName='base_worksheet_so_number';
pDimensionDate='base_worksheet_date';
## B. Preliminary checks
#dimension-related
IF(DIMENSIONEXISTS(pDimensionName)=0);
PROCESSQUIT;
ENDIF;
IF(DIMENSIONEXISTS(pDimensionDate)=0);
ITEMSKIP;
ENDIF;
# elements-related
IF(DIMIX(pDimensionName,pSourceElement)=0);
PROCESSQUIT;
ENDIF;
IF(DIMIX(pDimensionDate,pSourceElementDate)=0);
PROCESSQUIT;
ENDIF;
IF(DIMIX(pDimensionName,pTargetElement)=0 %
DTYPE(pDimensionName,pTargetElement)@='C');
PROCESSQUIT;
ENDIF;
IF(DIMIX(pDimensionDate,pTargetElementDate)=0 %
DTYPE(pDimensionDate,pTargetElementDate)@='C');
PROCESSQUIT;
ENDIF;
IF(TRIM(pSourceElement)@=TRIM(pTargetElement));
PROCESSQUIT;
ENDIF;
IF(TRIM(pSourceElementDate)@=TRIM(pTargetElementDate));
PROCESSQUIT;
ENDIF;
# process-related
IF(DATASOURCETYPE@<>'VIEW');
PROCESSQUIT;
ENDIF;
IF(DATASOURCENAMEFORSERVER@<>vCubeName);
PROCESSQUIT;
ENDIF;
IF(DATASOURCECUBEVIEW@<>vSourceViewName);
PROCESSQUIT;
ENDIF;
## C. Create a view containing all data for the Source element
# 1. Tidy up the Source view
VIEWDESTROY(vCubeName,vSourceViewName);
SUBSETDESTROY(pDimensionName,vSourceSubsetName);
SUBSETDESTROY(pDimensionDate,vSourceSubsetName);
# 2. Create subset
SUBSETCREATE(pDimensionName,vSourceSubsetName);
SUBSETELEMENTINSERT(pDimensionName,vSourceSubsetName,
pSourceElement,1);
SUBSETCREATE(pDimensionDate,vSourceSubsetName);
SUBSETELEMENTINSERT(pDimensionDate,vSourceSubsetName,
pSourceElementDate,1);
# 3. Create view & assign subset
VIEWCREATE(vCubeName,vSourceViewName);
VIEWSUBSETASSIGN(vCubeName,vSourceViewName,
pDimensionName,vSourceSubsetName);
VIEWSUBSETASSIGN(vCubeName,vSourceViewName,
pDimensionDate,vSourceSubsetName);
IF(DTYPE(pDimensionName,pSourceElement)@='C');
VIEWSETSKIPCALCS(vCubeName,vSourceViewName,0);
ENDIF;
IF(DTYPE(pDimensionDate,pSourceElementDate)@='C');
VIEWSETSKIPCALCS(vCubeName,vSourceViewName,0);
ENDIF;
VIEWSETSKIPRULEVALUES(vCubeName,vSourceViewName,0);
## D. Zero out a view containing all data for the Target element
# 1. Tidy up
VIEWDESTROY(vCubeName,vTargetViewName);
SUBSETDESTROY(pDimensionName,vTargetSubsetName);
VIEWDESTROY(vCubeName,vTargetViewName);
SUBSETDESTROY(pDimensionDate,vTargetSubsetName);
# 2. Create subset
SUBSETCREATE(pDimensionName,vTargetSubsetName);
SUBSETELEMENTINSERT(pDimensionName,vTargetSubsetName,
pTargetElement,1);
SUBSETCREATE(pDimensionDate,vTargetSubsetName);
SUBSETELEMENTINSERT(pDimensionDate,vTargetSubsetName,
pTargetElementDate,1);
# 3. Create view & assign subset
VIEWCREATE(vCubeName,vTargetViewName);
VIEWSUBSETASSIGN(vCubeName,vTargetViewName,
pDimensionName,vTargetSubsetName);
VIEWSUBSETASSIGN(vCubeName,vTargetViewName,
pDimensionDate,vTargetSubsetName);
# 4. Zero out the view
VIEWZEROOUT(vCubeName,vTargetViewName);
# 5. Tidy up
VIEWDESTROY(vCubeName,vTargetViewName);
SUBSETDESTROY(pDimensionName,vTargetSubsetName);
SUBSETDESTROY(pDimensionDate,vTargetSubsetName);
DATA:
Code: Select all
## A. Explicit constants
vCubeName='worksheet';
vSourceViewName='Source';
vTargetViewName='Target';
vSourceSubsetName='Target';
vTargetSubsetName='Source';
pDimensionName='base_worksheet_so_number';
pDimensionDate='base_worksheet_date';
## B. Preliminary checks
#dimension-related
IF(DIMENSIONEXISTS(pDimensionName)=0);
PROCESSQUIT;
ENDIF;
IF(DIMENSIONEXISTS(pDimensionDate)=0);
ITEMSKIP;
ENDIF;
# elements-related
IF(DIMIX(pDimensionName,pSourceElement)=0);
PROCESSQUIT;
ENDIF;
IF(DIMIX(pDimensionDate,pSourceElementDate)=0);
PROCESSQUIT;
ENDIF;
IF(DIMIX(pDimensionName,pTargetElement)=0 %
DTYPE(pDimensionName,pTargetElement)@='C');
PROCESSQUIT;
ENDIF;
IF(DIMIX(pDimensionDate,pTargetElementDate)=0 %
DTYPE(pDimensionDate,pTargetElementDate)@='C');
PROCESSQUIT;
ENDIF;
IF(TRIM(pSourceElement)@=TRIM(pTargetElement));
PROCESSQUIT;
ENDIF;
IF(TRIM(pSourceElementDate)@=TRIM(pTargetElementDate));
PROCESSQUIT;
ENDIF;
# process-related
IF(DATASOURCETYPE@<>'VIEW');
PROCESSQUIT;
ENDIF;
IF(DATASOURCENAMEFORSERVER@<>vCubeName);
PROCESSQUIT;
ENDIF;
IF(DATASOURCECUBEVIEW@<>vSourceViewName);
PROCESSQUIT;
ENDIF;
## C. Create a view containing all data for the Source element
# 1. Tidy up the Source view
VIEWDESTROY(vCubeName,vSourceViewName);
SUBSETDESTROY(pDimensionName,vSourceSubsetName);
SUBSETDESTROY(pDimensionDate,vSourceSubsetName);
# 2. Create subset
SUBSETCREATE(pDimensionName,vSourceSubsetName);
SUBSETELEMENTINSERT(pDimensionName,vSourceSubsetName,
pSourceElement,1);
SUBSETCREATE(pDimensionDate,vSourceSubsetName);
SUBSETELEMENTINSERT(pDimensionDate,vSourceSubsetName,
pSourceElementDate,1);
# 3. Create view & assign subset
VIEWCREATE(vCubeName,vSourceViewName);
VIEWSUBSETASSIGN(vCubeName,vSourceViewName,
pDimensionName,vSourceSubsetName);
VIEWSUBSETASSIGN(vCubeName,vSourceViewName,
pDimensionDate,vSourceSubsetName);
IF(DTYPE(pDimensionName,pSourceElement)@='C');
VIEWSETSKIPCALCS(vCubeName,vSourceViewName,0);
ENDIF;
IF(DTYPE(pDimensionDate,pSourceElementDate)@='C');
VIEWSETSKIPCALCS(vCubeName,vSourceViewName,0);
ENDIF;
VIEWSETSKIPRULEVALUES(vCubeName,vSourceViewName,0);
## D. Zero out a view containing all data for the Target element
# 1. Tidy up
VIEWDESTROY(vCubeName,vTargetViewName);
SUBSETDESTROY(pDimensionName,vTargetSubsetName);
VIEWDESTROY(vCubeName,vTargetViewName);
SUBSETDESTROY(pDimensionDate,vTargetSubsetName);
# 2. Create subset
SUBSETCREATE(pDimensionName,vTargetSubsetName);
SUBSETELEMENTINSERT(pDimensionName,vTargetSubsetName,
pTargetElement,1);
SUBSETCREATE(pDimensionDate,vTargetSubsetName);
SUBSETELEMENTINSERT(pDimensionDate,vTargetSubsetName,
pTargetElementDate,1);
# 3. Create view & assign subset
VIEWCREATE(vCubeName,vTargetViewName);
VIEWSUBSETASSIGN(vCubeName,vTargetViewName,
pDimensionName,vTargetSubsetName);
VIEWSUBSETASSIGN(vCubeName,vTargetViewName,
pDimensionDate,vTargetSubsetName);
# 4. Zero out the view
VIEWZEROOUT(vCubeName,vTargetViewName);
# 5. Tidy up
VIEWDESTROY(vCubeName,vTargetViewName);
SUBSETDESTROY(pDimensionName,vTargetSubsetName);
SUBSETDESTROY(pDimensionDate,vTargetSubsetName);
EPILOG:
Code: Select all
# 4. Tidy up the Source view
VIEWDESTROY(vCubeName,vSourceViewName);
SUBSETDESTROY(pDimensionName,vSourceSubsetName);
SUBSETDESTROY(pDimensionDate,vSourceSubsetName);