Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
jw22
Contributor II
Contributor II

Comparison of strings and show difference

Hello Qlik Community!

I am pretty new to Qlik and I hope that someone can help me with my "challenge":

 

I have the following table with 3 strings "Test Names", "Target" and "Actual". Strings are divided by ';'.

jw22_3-1669732646356.png

 

Is there a possibility to compare the strings/ colums "Target" and "Actual" and then show the difference as text from the column "Test Names" ?

In this case, after the fifth ';' there is an difference between Target and Actual so it should show the text after the fifth ';' from the column "Test Names"

In this case it should show "Kameraprüfung2 Pos2".

 

Thank you!

Johannes

Labels (1)
1 Solution

Accepted Solutions
MarcoWedel

Hallo Johannes,

maybe you could try splitting your different tests in the script and compare them one by one:

 

MarcoWedel_0-1669753217834.png

Concat({$<Equal={0}>} TestName,';', TestNo)

 

MarcoWedel_1-1669753241924.png

 

MarcoWedel_2-1669753260960.png

 

table1:
LOAD RecNo() as TestID, * 
Inline [
Test Names, Target, Actual
E-Prüfung 1;E-Prüfung 2;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1;1;1, 1;1;1;1;1;1;1;1
E-Prüfung 1;E-Prüfung 2;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1;1;1, 1;1;1;0;1;1;1;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1;1, 1;0;1;1;1;0;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1;1, 1;1;1;1;1;1;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;0;1;1;0;1, 1;1;1;1;1;1;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1, 1;1;1;1;1;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Kameraprüfung 1;Kameraprüfung 2, 0;0;0;0;0;0, 0;0;0;0;0;0
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Kameraprüfung 1;Kameraprüfung 2, 0;1;0;0;0;0, 0;0;0;0;1;0
];

table2:
LOAD *,
     -(TargetFlag=ActualFlag) as Equal;
LOAD TestID,
     IterNo()								as TestNo,
     SubField([Test Names],';',IterNo())	as TestName,
     SubField(Target,';',IterNo())			as TargetFlag,
     SubField(Actual,';',IterNo())			as ActualFlag
Resident table1
While IterNo() <= RangeMax(SubStringCount([Test Names],';'),SubStringCount(Target,';'),SubStringCount(Actual,';'))+1;

 

hope this helps

Gruß

Marco

 

 

View solution in original post

2 Replies
MarcoWedel

Hallo Johannes,

maybe you could try splitting your different tests in the script and compare them one by one:

 

MarcoWedel_0-1669753217834.png

Concat({$<Equal={0}>} TestName,';', TestNo)

 

MarcoWedel_1-1669753241924.png

 

MarcoWedel_2-1669753260960.png

 

table1:
LOAD RecNo() as TestID, * 
Inline [
Test Names, Target, Actual
E-Prüfung 1;E-Prüfung 2;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1;1;1, 1;1;1;1;1;1;1;1
E-Prüfung 1;E-Prüfung 2;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1;1;1, 1;1;1;0;1;1;1;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1;1, 1;0;1;1;1;0;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1;1, 1;1;1;1;1;1;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Längenprüfung 2;Kameraprüfung 1;Kameraprüfung 2, 1;1;0;1;1;0;1, 1;1;1;1;1;1;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Kameraprüfung 1;Kameraprüfung 2, 1;1;1;1;1;1, 1;1;1;1;1;1
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Kameraprüfung 1;Kameraprüfung 2, 0;0;0;0;0;0, 0;0;0;0;0;0
E-Prüfung 1;Widerstandsprüfung 1;Widerstandsprüfung 2;Längenprüfung 1;Kameraprüfung 1;Kameraprüfung 2, 0;1;0;0;0;0, 0;0;0;0;1;0
];

table2:
LOAD *,
     -(TargetFlag=ActualFlag) as Equal;
LOAD TestID,
     IterNo()								as TestNo,
     SubField([Test Names],';',IterNo())	as TestName,
     SubField(Target,';',IterNo())			as TargetFlag,
     SubField(Actual,';',IterNo())			as ActualFlag
Resident table1
While IterNo() <= RangeMax(SubStringCount([Test Names],';'),SubStringCount(Target,';'),SubStringCount(Actual,';'))+1;

 

hope this helps

Gruß

Marco

 

 

jw22
Contributor II
Contributor II
Author

Hello Marco,

perfect, this is working fince - thank you!

Schöne Grüße!