Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
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!