Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Encore débutant sur Qlikview, je ne sais pas si ce que je souhaite faire est possible, et si oui, comment le faire.
Il me faut comparer les lignes dans un load pour supprimer les doublons, suivants certaines conditions.
J'ai vu beaucoup d'exemples de comparaison entre ligne sur des tableaux, mais pas (encore) dans le load même.
Actuellement, pour ce faire, j'essaie la méthode suivante : construction de 3 tables, la seconde appelant la première, et la 3e la 2nde.
Les tables font plusieurs dizaines de millier de ligne et plusieurs dizaines de colonnes. Celles présentées ci-après le sont juste à titre d'exemple.
Ce sont les FieldValue qui semblent ne pas fonctionner, ce que je ne comprends pas.
Auriez-vous une idée ?
Table1 :
LOAD * inline [
Champ1 Champ2 Champ3 Champ4
A1 A2 A3 A4
B1 B2 B3 B4
]
;
Table2 :
LOAD *,
if (FieldValue([Champ1],RecNo()) = FieldValue([Champ1],RecNo()-1)
and FieldValue([Champ2],RecNo()) <> FieldValue([Champ2],RecNo()-1)
and FieldValue([Champ2],RecNo()-1) = '', 1, 2) as [aSupprimer]
Resident Table1
;
DROP Table Table1;
Table3 :
LOAD *
Resident Table2
where exists('aSupprimer',2) //ceux marqués d'un 1 ne sont pas pris en compte
;
DROP Table Table2;
Merci pour toute réponse, et idée pouvant m'aider
Michaël
Par example:
Table1:
LOAD * inline [
Champ1,Champ2,Champ3,Champ4
A1,A2,A3,A4
B1,B2,B3,B4];
Table2:
LOAD *,
if(Champ1=Peek(Champ1) and Champ2<>Peek(Champ2)
and Champ3= '', True(), False()) as [aSupprimer]
Resident Table1
Order By Champ1,Champ2,Champ3,Champ4;
Table3:
LOAD *
Resident Table2
where aSupprimer=2; //ceux marqués d'un 1 ne sont pas pris en compte
DROP Table Table1, Table2;
HIC
Bonjour Michael,
Votre ligne de pensée me semble ok. Au lieu de 'fieldvalue', recherchez la fonction 'Peek'. Je suppose qu'avec elle, vous saurez faire ce que vous voulez.
Cdt,
Johan
Par example:
Table1:
LOAD * inline [
Champ1,Champ2,Champ3,Champ4
A1,A2,A3,A4
B1,B2,B3,B4];
Table2:
LOAD *,
if(Champ1=Peek(Champ1) and Champ2<>Peek(Champ2)
and Champ3= '', True(), False()) as [aSupprimer]
Resident Table1
Order By Champ1,Champ2,Champ3,Champ4;
Table3:
LOAD *
Resident Table2
where aSupprimer=2; //ceux marqués d'un 1 ne sont pas pris en compte
DROP Table Table1, Table2;
HIC
Merci beaucoup, c'est ce qui me manquait !
Effectivement, ça a bien été le cas !