Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello everybody,
I am struggling with some issues in tMap expression. There is the table with those fields:
ANRED (the title of person) with those values:
MR | 1 |
MISS | 2 |
MRS | 3 |
MS | 4 |
DR | null |
GESCH (gender key) with those values:
Female | 2 |
Male | 1 |
For the case when ANRED value is null I need to use this rule for output:
IF ANRED = null AND GESCH = 2 then output_value = 4 ELSE output_value = 1.
This is my expression:
(Basic_G2_Structure2.ANRED==null)&&(Basic_G2_Structure2.GESCH!="2")?"1":"4"
Unfortunately, the output from the expression is always '1' for all ANRED values although the values are correct on input.
I guess I have something wrong in the expression but I do not know what.
Could you someone advise me, please?
Thank you.
/Martin
Hi Manohar,
the result is again better than previously. But still not good.
Here is current input (Basic_G2_Structure):
|=----+-----+-----+-----+-----+-----+-----+
|RECTY|CLIID|CNAME|RUFNM|KNZNM|ANRED|GESCH|
|=----+-----+-----+-----+-----+-----+-----+
|P0002|42730|null |null |null |1 |1 |
|P0002|42737|null |null |null |1 |1 |
|P0002|42762|null |null |null |null |1 |
|P0002|42768|null |null |null |3 |2 |
|P0002|42774|null |null |null |3 |2 |
|P0002|42782|null |null |null |3 |2 |
|P0002|42784|null |null |null |3 |2 |
|P0002|42789|null |null |null |4 |2 |
|P0002|42793|null |null |null |1 |1 |
|=----+-----+-----+-----+-----+-----+-----+
here is the expression:
(Basic_G2_Structure2.ANRED==null || ("").equals(Basic_G2_Structure2.ANRED)|| ("1").equals(Basic_G2_Structure2.ANRED))&& ("1").equals(Basic_G2_Structure2.GESCH)?"1" :"4"
and here is the output after processing:
|=----+-----+-----+-----+-----+-----+-----+
|RECTY|CLIID|CNAME|RUFNM|KNZNM|ANRED|GESCH|
|=----+-----+-----+-----+-----+-----+-----+
|P0002|42730|null |null |null |1 |1 |
|P0002|42737|null |null |null |1 |1 |
|P0002|42762|null |null |null |1 |1 |
|P0002|42768|null |null |null |4 |2 |
|P0002|42774|null |null |null |4 |2 |
|P0002|42782|null |null |null |4 |2 |
|P0002|42784|null |null |null |4 |2 |
|P0002|42789|null |null |null |4 |2 |
|P0002|42793|null |null |null |1 |1 |
|=----+-----+-----+-----+-----+-----+-----+
In the case CLIID 42762 the expression works according to expectation:
|=----+-----+-----+-----+-----+-----+-----+
|RECTY|CLIID|CNAME|RUFNM|KNZNM|ANRED|GESCH|
|=----+-----+-----+-----+-----+-----+-----+
|P0002|42762|null |null |null |1 |1 |
|=----+-----+-----+-----+-----+-----+-----+
But for all cases where GESCH value before processing = 2 the ANRED value was changed from original to new value '4' after processing via the expression:
|=----+-----+-----+-----+-----+-----+-----+
|RECTY|CLIID|CNAME|RUFNM|KNZNM|ANRED|GESCH|
|=----+-----+-----+-----+-----+-----+-----+
|P0002|42730|null |null |null |1 |1 |
|P0002|42737|null |null |null |1 |1 |
|P0002|42762|null |null |null |1 |1 |
|P0002|42768|null |null |null |4 |2 |
|P0002|42774|null |null |null |4 |2 |
|P0002|42782|null |null |null |4 |2 |
|P0002|42784|null |null |null |4 |2 |
|P0002|42789|null |null |null |4 |2 |
|P0002|42793|null |null |null |1 |1 |
|=----+-----+-----+-----+-----+-----+-----+
So, there is still something in the expression that causes change ANRED value despite the original ANRED value = null.
There is condition with logical AND:
IF ANRED = null AND IF GESCH = "1" THEN ANRED = "1" ELSE ANRED = "4"
so, both conditions have to match at the same time within the evaluation.
Thanks a lot for your support again.
/Martin
@MAlex , can you try with below expression.
(Basic_G2_Structure2.ANRED==null && ("1").equals(Basic_G2_Structure2.GESCH))?"1" :"4"
Hi Manohar,
with this expression:
(Basic_G2_Structure2.ANRED==null && ("1").equals(Basic_G2_Structure2.GESCH))?"1" :"4"
we have returned back to begin:
input Final_G2_Structure
ID |
ANRED |
GESCH |
100 |
1 |
1 |
101 |
4 |
2 |
103 |
1 |
1 |
104 |
2 |
2 |
105 |
4 |
1 |
Unfortunately, the output is the following:
output Final_G2_Structure
ID |
ANRED |
GESCH |
100 |
4 |
1 |
101 |
4 |
2 |
103 |
4 |
1 |
104 |
4 |
2 |
105 |
4 |
1 |
However, thank you for your help.
/Martin
Hello Ganshyam,
thank you for your interest. Really, it looks like the output from the expression which I am looking for …
/Martin
Hi Ganshyam,
any idea how to get the output on your screenshot via an expression?
Thank you.
/Martin
Hello @MAlex
I tried below condition to get your expected result.Try it out and validate against your input data.
(row1.ANRED.equals("null")|| row1.ANRED.equals("1"))&& row1.GESCH.equals("1")?"1" :
row1.ANRED.equals("null")&& !row1.GESCH.equals("1")?"4":row1.ANRED
Regards