Datastage Realtime Scenario:
Requirement: When you have output field contains currency data and would need to put comma(,) as thousand separator.
Example : Input - Output
879769 - 879,769
123 - 123
3543543 - 3,543,543
23 - 23
Solution:
To fullfil the above requirement we can go for 2 design solutions.
1. Create a parallel routine in cpp and call the function in Transformer stage.
#include <iostream>
#include <string>
using namespace std;
string AddCommas(char* a)
{
string numWithCommas = to_string(a);
int insertPosition = numWithCommas.length() - 3;
while (insertPosition > 0) {
string b = numWithCommas.insert(insertPosition, ",");
insertPosition-=3;}
return b;
}
2. By using stage variable, Loop Condition in Transformer stage
Stage Variables
1. Len(Inputcolumn) = Stglen
2. If Stglen<=3 then 1 Else If Mod(Stglen,3)=0 = Stgnocommas
Then Len(Inputcolumn)/3-1 Else Len(Inputcolumn)/3
Loop Condition
Loop While : @ITERATION<=Stgnocommas
1. If (@ITERATION=1 and Stglen<=3) then Inputcolumn Else
If @ITERATION=1 Then Left(Inputcolumn, Stglen-
(3*@ITERATION)) :",":Right(Inputcolumn, 3* @ITERATION) = LoopVar
Else Left(LoopVar, Stglen-(3* @ITERATION)):",":
Right(LoopVar, (@ITERATION-1)+(3* @ITERATION))
Derivation
Constaint : @ITERATION=Stgnocommas
1. LoopVar = Numwth_commas
No comments:
Post a Comment