Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Boucle et scripting au moment du LOAD

Bonjour,

Je suis confronté à une problématique que je n'arrive pas à résoudre.

J'aurais voulu mettre au point une boucle qui me permettrai de charger et de traiter chaque champs les uns après les autres...

Exemple:

 

IDABCD
11000
21101
31101
40110
50110
60100
70100

1-/Je voudrais charger la table avec ID et A en éliminant les valeur null de A et sauvegarder un A.qvd avec ID et A.


2-/...Charger la table avec ID et B en éliminant les valeur null de B et sauvegarder un B.qvd avec ID et B;


3-/...Charger la table avec ID et C en éliminant les valeur null de C et sauvegarder un C.qvd avec ID et C.


4-/...Charger la table avec ID et D en éliminant les valeur null de D et sauvegarder un D.qvd avec ID et D.


Merci par avance pour votre aide,


Willy

1 Solution

Accepted Solutions
maxgro
MVP
MVP

source:

LOAD ID, A, B, C, D

FROM

[https://community.qlik.com/thread/165964]

(html, codepage is 1252, embedded labels, table is @1);

for col=ord('A') to ord('D')

  let col2=chr($(col));

  trace $(col) $(col2);

  $(col2): load ID, $(col2) Resident source where $(col2) > 0;

  store $(col2) into [$(col2).qvd] (qvd);

  drop Table $(col2); 

NEXT;

View solution in original post

5 Replies
maxgro
MVP
MVP

source:

LOAD ID, A, B, C, D

FROM

[https://community.qlik.com/thread/165964]

(html, codepage is 1252, embedded labels, table is @1);

for col=ord('A') to ord('D')

  let col2=chr($(col));

  trace $(col) $(col2);

  $(col2): load ID, $(col2) Resident source where $(col2) > 0;

  store $(col2) into [$(col2).qvd] (qvd);

  drop Table $(col2); 

NEXT;

Not applicable
Author

Bonjour,

Merci pour votre réponse...

J'ai une autre question.

Je voudrais mettre en oeuvre une boucle avec la variable suivante col =A_,B,C__,_D a partir d'un table que j’aurais déjà chargé.

TABLE:

LOAD ID,

     B,

     A_,

     _D,

     C__

FROM

TABLE.qvd

(qvd);

Merci par avance de votre aide.


Willy

Not applicable
Author

Bonjour Willy,

Voici un bout de code à tester. Il est optimisable mais j'ai tenté de favoriser la lisibilité.

LET listeColonnes ='A_,B,C__,_D';

LET ColStart = 1;

LET NoVirgule = 1;

LET positionVirgule=0;

DO WHILE positionVirgule < LEN(listeColonnes)+1

  LET positionVirgule = INDEX('$(listeColonnes)',',',$(NoVirgule));

  IF positionVirgule = 0 THEN

    LET positionVirgule = LEN(listeColonnes)+1;

    END IF;

    LET longueurTexte = $(positionVirgule)-$(ColStart);

    LET Colonne = MID('$(listeColonnes)',$(ColStart),$(longueurTexte));

    LET ColStart = $(positionVirgule)+1;

    LET NoVirgule = NoVirgule+1;

  // Votre code avec $(colonne) valant respectivement A_ puis B puis C__ puis D dans la boucle

LOOP;

maxgro
MVP
MVP

source:

LOAD          // changed column names

  ID,   A as B,     B as A_,     C as _D,     D as C__;

LOAD ID, A, B, C, D

FROM

[https://community.qlik.com/thread/165964]

(html, codepage is 1252, embedded labels, table is @1);

LET a = NoOfFields('source');

for col=2 to $(a)

  let col2=FieldName($(col), 'source');

  trace $(col) $(col2);

  $(col2): load ID, $(col2) Resident source where $(col2) > 0;

  store $(col2) into [$(col2).qvd] (qvd);

  drop Table $(col2);

NEXT;

Not applicable
Author

    Bonjour j'ai un probléme avec QLIK SENSE je suis un débutant je ne sais pas ou écrire les boucle et ou les script merci d'avance