Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
I have below script in qvw. when I reload I can able to see in Flag column only START and GONE. Remaining are not loading into Flag column. Please can anyone suggest me is there any wrong in below script?
If (MixMatch(NAME,'XX',
'YY',
'ZZ',
'AA',
'BB',
'CC',
'DD',
'EE',
'FF',
'GG',
'HH',
'II',
'JJ',
'KK',
'LL',
'MM',
'NN',
'OO',
'PP',
'QQ,
'RR',
'SS',
'TT',
'UU',
'VV',
'WW'),Dual('START',1),
If(MixMatch(NAME,'GONE'),Dual('GONE',2),
If(MixMatch(NAME,'QQ,
'RR',
'SS',
'TT',
'UU'),Dual('APP',3)
If(MixMatch(NAME,'XX',
'YY',
'ZZ',
'AA',
'BB',
'CC',
'DD',
'EE',
'FF',
'GG',
'HH',
'II',
'JJ',
'KK',
'LL',
'MM',
'NN',
'OO',
'PP',
'VV',
'WW'),Dual('PROCESS',4),
If(MixMatch(NAME,
'YY',
'ZZ',
'AA',
'BB',
'CC',
'DD',
'EE',
'FF',
'GG',
'HH',
'II',
'JJ',
'KK',
'LL',
'MM',
'NN',
'OO',
'PP',
'QQ),Dual('CON',5)))))) as Flag
Thanks.
On first glance, seems like you tested these values already before, so there is no execution path that leads to these Flag values.
yep. is there any thing do I need to add to load all values?
That is because your first and second if statements are covering all the things for anything after that. You cannot assign two flags to one value at the same time in one column.
For example YY cannot be START as well as PROCESS at the same time in one column for one row.
Does that make sense?
May be you can do something like this:
Table
LOAD *,
Dual('START',1) as Flag
Resident ....
Where MixMatch(NAME,'XX','YY','ZZ','AA','BB','CC','DD','EE','FF','GG','HH','II','JJ','KK','LL','MM','NN','OO','PP','QQ,'RR','SS','TT','UU','VV','WW');
Concatenate (Table)
LOAD *,
Dual('GONE',2) as Flag
Resident ....
Where MixMatch(NAME,'GONE');
Concatenate (Table)
LOAD *,
Dual('APP',3) as Flag
Resident ....
Where MixMatch(NAME,'QQ,'RR','SS','TT','UU');
Concatenate (Table)
LOAD *,
Dual('PROCESS',4) as Flag
Resident ....
Where MixMatch(NAME,'XX','YY','ZZ','AA','BB','CC','DD','EE','FF','GG','HH','II','JJ','KK','LL','MM','NN','OO','PP','VV','WW');
Concatenate (Table)
LOAD *,
Dual('CON',5) as Flag
Resident ....
Where MixMatch(NAME,'YY','ZZ','AA','BB','CC','DD','EE','FF','GG','HH','II','JJ','KK','LL','MM','NN','OO','PP','QQ);
yes make sense. is there any way we can get two flags? I need all 5 columns as below
START
GONE
APP
PROCESS
CON
Thanks. I used and when I am reloading it is showing field names must be unique within the table
do I need to change anything?
Make sure the older table from where you are picking the data doesn't have a field called Flag. If it does you can rename the new Flag to may be FlagNew
Table
LOAD *,
Dual('START',1) as FlagNew
Resident ....
WhereMixMatch(NAME,'XX','YY','ZZ','AA','BB','CC','DD','EE','FF','GG','HH','II','JJ','KK','LL','MM','NN','OO','PP','QQ,'RR','SS','TT','UU','VV','WW');
Concatenate (Table)
LOAD *,
Dual('GONE',2) as FlagNew
Resident ....
Where MixMatch(NAME,'GONE');
Concatenate (Table)
LOAD *,
Dual('APP',3) as FlagNew
Resident ....
Where MixMatch(NAME,'QQ,'RR','SS','TT','UU');
Concatenate (Table)
LOAD *,
Dual('PROCESS',4) as FlagNew
Resident ....
Where MixMatch(NAME,'XX','YY','ZZ','AA','BB','CC','DD','EE','FF','GG','HH','II','JJ','KK','LL','MM','NN','OO','PP','VV','WW');
Concatenate (Table)
LOAD *,
Dual('CON',5) as FlagNew
Resident ....
Where MixMatch(NAME,'YY','ZZ','AA','BB','CC','DD','EE','FF','GG','HH','II','JJ','KK','LL','MM','NN','OO','PP','QQ);
I hope this will resolve your issue.
Best,
Sunny
If your original table is called OriginalTable, load a NewTable like
NewTable:
LOAD *,
Dual('START',1) as Flag
Resident OriginalTable
WhereMixMatch(NAME,'XX','YY','ZZ','AA','BB','CC','DD','EE','FF','GG','HH','II','JJ','KK','LL','MM','NN','OO','PP','QQ,'RR','SS','TT','UU','VV','WW');
Concatenate (NewTable)
LOAD *,
Dual('GONE',2) as Flag
Resident OriginalTable
Where MixMatch(NAME,'GONE');
...
//Continue loading the different flag values
DROP TABLE OriginalTable;
yes. I did the same. but showing error.