Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
ID | A | B | C | D |
1 | 1 | 0 | 0 | 0 |
2 | 1 | 1 | 0 | 1 |
3 | 1 | 1 | 0 | 1 |
4 | 0 | 1 | 1 | 0 |
5 | 0 | 1 | 1 | 0 |
6 | 0 | 1 | 0 | 0 |
7 | 0 | 1 | 0 | 0 |
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
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;
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;
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
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;
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;
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