# New to Qlik Sense

Discussion board where members can get started with Qlik Sense.

New Contributor

## How to use a "left join Load with peek()" inside an if/else and for/next loop?

Hello,

I have a Table ( 'Quelle' ) as Source. There are two fields in it ( 'Erster' , 'Zweiter' ), which should be compared.

I need the field with more characters as return ( 'BestOf' ). If both fields ( 'Erster' , 'Zweiter' ) have an evan count of characters then take 'Erster' as return.

Up to now I have the following Code in my Skript:

--------------------------------------------------------------------------------------------

Quelle:

Erster, Zweiter, Primärschlüßel

a, 22, aaa

ab, 333, bbb

abc, 4444, ccc

abcd, 4444, ddd

abcde, 4444, eee

ab, 55555, fff,

ab, 1, ggg

ab, 22, hhh

];

Ergebniss:

Primärschlüßel as Sekundärschlüßel

Resident Quelle;

for i = 0 to (NoOfRows('Quelle'))-1;

let vLänge_Erster = len(peek('Erster',\$(i),'Quelle'));

let vLänge_Zweiter = len(peek('Zweiter',\$(i),'Quelle'));

Trace Durchgang i:  \$(i);

Trace Länge von 'Erster': \$(vLänge_Erster);

Trace Länge von 'Zweiter': \$(vLänge_Zweiter);

if vLänge_Erster >= vLänge_Zweiter     Then

Trace genommern wird Wert aus Feld:'Erster';

left Join (Ergebniss)

peek('Erster',\$(i),'Quelle') as BestOf,

\$(i) as i,

peek('Primärschlüßel',\$(i),'Quelle') as Sekundärschlüßel

Resident Ergebniss;

else

Trace genommern wird Wert aus Feld: 'Zweiter';

left Join (Ergebniss)

peek('Zweiter',\$(i),'Quelle') as BestOf,

\$(i) as i,

peek('Primärschlüßel',\$(i),'Quelle') as Sekundärschlüßel

Resident Ergebniss;

ENDIF

Trace -----------;

next

--------------------------------------------------------------------------------------------

I think somewhere in the red parts is a Bug, but I can't find it.

Can anyone help me?

THX

1 Solution

Accepted Solutions
Contributor II

## Re: How to use a "left join Load with peek()" inside an if/else and for/next loop?

Hi,

please find the attached solution Qvw.

** Modified Script****

Quelle:

Erster, Zweiter, Primärschlüßel

a, 22, aaa

ab, 333, bbb

abc, 4444, ccc

abcd, 4444, ddd

abcde, 4444, eee

ab, 55555, fff,

ab, 1, ggg

ab, 22, hhh

];

Ergebniss:

Primärschlüßel as Sekundärschlüßel

Resident Quelle;

for i = 0 to (NoOfRows('Quelle'))-1;

let vLänge_Erster = len(peek('Erster',\$(i),'Quelle'));

let vLänge_Zweiter = len(peek('Zweiter',\$(i),'Quelle'));

Trace Durchgang i:  \$(i);

Trace Länge von 'Erster': \$(vLänge_Erster);

Trace Länge von 'Zweiter': \$(vLänge_Zweiter);

//    if vLänge_Erster >= vLänge_Zweiter    Then

//

//        Trace genommern wird Wert aus Feld:'Erster';

//          left Join (Ergebniss)

Table:

if( \$(vLänge_Erster) >= \$(vLänge_Zweiter),peek('Erster',\$(i),'Quelle'), peek('Zweiter',\$(i),'Quelle')) as BestOf,

\$(i) as i,

peek('Primärschlüßel',\$(i),'Quelle') as Sekundärschlüßel

Resident Ergebniss;

//

//        else

//

//        Trace genommern wird Wert aus Feld: 'Zweiter';

//

//            left Join (Ergebniss)

//

//

//            peek('Zweiter',\$(i),'Quelle') as BestOf,

//

//            \$(i) as i,

//

//            peek('Primärschlüßel',\$(i),'Quelle') as Sekundärschlüßel

//

//            Resident Ergebniss;

//

//    ENDIF

//

//    Trace -----------;

next

//NoConcatenate

left Join (Ergebniss)

*

Resident Table;

DROP Table Table,Quelle;

********************************************* SCRIPT END ***********************************************

Regards,

3 Replies
Contributor II

## Re: How to use a "left join Load with peek()" inside an if/else and for/next loop?

Hi,

please find the attached solution Qvw.

** Modified Script****

Quelle:

Erster, Zweiter, Primärschlüßel

a, 22, aaa

ab, 333, bbb

abc, 4444, ccc

abcd, 4444, ddd

abcde, 4444, eee

ab, 55555, fff,

ab, 1, ggg

ab, 22, hhh

];

Ergebniss:

Primärschlüßel as Sekundärschlüßel

Resident Quelle;

for i = 0 to (NoOfRows('Quelle'))-1;

let vLänge_Erster = len(peek('Erster',\$(i),'Quelle'));

let vLänge_Zweiter = len(peek('Zweiter',\$(i),'Quelle'));

Trace Durchgang i:  \$(i);

Trace Länge von 'Erster': \$(vLänge_Erster);

Trace Länge von 'Zweiter': \$(vLänge_Zweiter);

//    if vLänge_Erster >= vLänge_Zweiter    Then

//

//        Trace genommern wird Wert aus Feld:'Erster';

//          left Join (Ergebniss)

Table:

if( \$(vLänge_Erster) >= \$(vLänge_Zweiter),peek('Erster',\$(i),'Quelle'), peek('Zweiter',\$(i),'Quelle')) as BestOf,

\$(i) as i,

peek('Primärschlüßel',\$(i),'Quelle') as Sekundärschlüßel

Resident Ergebniss;

//

//        else

//

//        Trace genommern wird Wert aus Feld: 'Zweiter';

//

//            left Join (Ergebniss)

//

//

//            peek('Zweiter',\$(i),'Quelle') as BestOf,

//

//            \$(i) as i,

//

//            peek('Primärschlüßel',\$(i),'Quelle') as Sekundärschlüßel

//

//            Resident Ergebniss;

//

//    ENDIF

//

//    Trace -----------;

next

//NoConcatenate

left Join (Ergebniss)

*

Resident Table;

DROP Table Table,Quelle;

********************************************* SCRIPT END ***********************************************

Regards,

New Contributor

Contributor II

Always welcome