Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
expeditor
Contributor
Contributor

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

Hello,

Please help.

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.

Zwischenablage01.jpg

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

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

Quelle:

LOAD * INLINE [

    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:

LOAD

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)

            load

            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)

            load

            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
bhaskar_sm
Partner - Creator III
Partner - Creator III

Hi,

please find the attached solution Qvw.

Sol.PNG

** Modified Script****

Quelle:

LOAD * INLINE [

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:

LOAD

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:

            load

            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)

//

//            load

//

//            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)

LOAD

*

Resident Table;

DROP Table Table,Quelle;

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

Regards,

Bhasker Kumar

View solution in original post

3 Replies
bhaskar_sm
Partner - Creator III
Partner - Creator III

Hi,

please find the attached solution Qvw.

Sol.PNG

** Modified Script****

Quelle:

LOAD * INLINE [

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:

LOAD

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:

            load

            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)

//

//            load

//

//            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)

LOAD

*

Resident Table;

DROP Table Table,Quelle;

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

Regards,

Bhasker Kumar

expeditor
Contributor
Contributor
Author

Thank you Bhasker, that worked.

bhaskar_sm
Partner - Creator III
Partner - Creator III

Always welcome