Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
I am trying to create a variable that creates several ApplyMap Statements in the Load Script.
In the Second Iteration, it degrades
See below:
LET c =Null ();
FOR j =0 to 23
LET c = '$(c)' & If ($(j) =0, '', ', ') & 'ApplyMap'&'('&Chr(39)&'Map_Table'&Chr(39)&','&'%Key1'&'&'&Chr(39)&'|'&Chr(39)&'&'&'[Key2]&'&Chr(39)&'|'&Chr(39)'&'&$(j)&','&'0'&')'&' as [P ($(j))]';
NEXT j
[Table 2]:
LOAD
*,
$(c)
Resident [Table 1] ;
ApplyMap('Map_Table',%Key1&'|'&[Key2]&'|'&0,0) as [P (0)],
ApplyMap(Map_Table,%Key1|[Key2]|1,0) as [P (1)]
// the first iteration is a success.
//the second (and subsequent) iteration(s) is a failure. Note how ' ' for the table name, the & and the '|' have disappeared.
How I could make it behave?
Thanks,
Antoine
PS: it falls within a series of simulation I am performing:
http://community.qlik.com/thread/92181
http://community.qlik.com/thread/91411
Bonjour Antoine,
Reusing a snippet of code from another of your posts related to the same subject, I have added a second instruction that I believe shall build the statement you are wishing for. / En réutilisant un bout de code de l'un de vos autres posts concernant un sujet similaire, je crois bien avoir construit un énoncé qui produira l'effet désiré.
LET b=Null();
LET c=Null();
FOR i=0 to 23
LET b = '$(b)' & If($(i)=0, '', ',') & '[$(i)] as [Hour $(i)]';
LET c = '$(c)' & If($(i)=0, '', ',') & 'ApplyMap('& Chr(39) & 'Map_Table' & Chr(39) & ', [%Key1]&' & Chr(39) & '|' & Chr(39) & '&[Key2]&' & Chr(39) & '|' & Chr(39) & '&$(i), 0) as [P ($(i))]';
NEXT i
TRACE $(c);
Regards / Cordialement
Philippe
If ($(j) =0 seems to be causing this.
thanks,
Rajesh Vaswani
Bonjour Antoine,
Reusing a snippet of code from another of your posts related to the same subject, I have added a second instruction that I believe shall build the statement you are wishing for. / En réutilisant un bout de code de l'un de vos autres posts concernant un sujet similaire, je crois bien avoir construit un énoncé qui produira l'effet désiré.
LET b=Null();
LET c=Null();
FOR i=0 to 23
LET b = '$(b)' & If($(i)=0, '', ',') & '[$(i)] as [Hour $(i)]';
LET c = '$(c)' & If($(i)=0, '', ',') & 'ApplyMap('& Chr(39) & 'Map_Table' & Chr(39) & ', [%Key1]&' & Chr(39) & '|' & Chr(39) & '&[Key2]&' & Chr(39) & '|' & Chr(39) & '&$(i), 0) as [P ($(i))]';
NEXT i
TRACE $(c);
Regards / Cordialement
Philippe
Indeed it is even simpler to put more inside the initial quotes:)
En effet c'est plus simple et astucieux.
It worked like a charm!! Merveilleux et élégant.
Un grand merci !!!
Avec plaisir!