Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous,
Débutante sur QlikView j'aurais besoin d'aide sur le point suivant :
J'ai une table dont la structure est :
Time | Tag1 | Tag2 |
---|---|---|
1 | 10 | - |
1 | - | 30 |
2 | 20 | - |
2 | - | 40 |
Je voudrais obtenir :
Time | Tag1 | Tag2 |
---|---|---|
1 | 10 | 30 |
2 | 20 | 40 |
Après avoir retourné le problème dans tous les sens, j'en arrive à la conclusion qu'il faudrait :
1. Que je remplace les "-" par des 0
Time | Tag1 | Tag2 |
---|---|---|
1 | 10 | 0 |
1 | 0 | 30 |
2 | 20 | 0 |
2 | 0 | 40 |
2. Que je me débrouille de faire une sorte de group by(Time) dans cette table en agrégeant sur
- sum(Tag1)
- sum(Tag2) (je n'ai jamais 2 valeurs de tag pour un même Time donc OK)
- sum(Tag1) + sum(Tag2)
Cela vous semble-t-il possible ? (j'espère que oui sinon tout mon projet est à revoir ... )
Mille mercis pour vos réponses.
Aude
Salut,
Ne remplace pas les '-' par des '0'.
Il suffit de faire un join pour obtenir le résultat que tu cherches.
Soit Tab_tmp ta table initiale avec la structure que tu indique, alors fais:
Tab_tmp:
LOAD
Time,
Tag1,
Tag2,
Rowno() as Ligne // pense à rajouter cette table pour différencier celle-ci de la table resultat que tu auras
From
// ta source
Tab:
LOAD
Time,
Tag1
Resident
Tab_tmp
Where Isnull(Tag1)=0 // condition a mettre si tu ne veux charger que lorsque Tag1 est non null
;
JOIN
(Tab)
LOAD
Time,
Tag2
Resident
Tab_tmp
Where Isnull(Tag2)=0 // condition a mettre si tu ne veux charger que lorsque Tag2 est non null
;
DROP TABLE Tab_tmp;
Bonjour,
il suffit de faire un join entre
T1:
noconcatenate
LOAD Time, Tag1 Resident T
join
LOAD Time, Tag2 Resident T
chris
Salut,
Ne remplace pas les '-' par des '0'.
Il suffit de faire un join pour obtenir le résultat que tu cherches.
Soit Tab_tmp ta table initiale avec la structure que tu indique, alors fais:
Tab_tmp:
LOAD
Time,
Tag1,
Tag2,
Rowno() as Ligne // pense à rajouter cette table pour différencier celle-ci de la table resultat que tu auras
From
// ta source
Tab:
LOAD
Time,
Tag1
Resident
Tab_tmp
Where Isnull(Tag1)=0 // condition a mettre si tu ne veux charger que lorsque Tag1 est non null
;
JOIN
(Tab)
LOAD
Time,
Tag2
Resident
Tab_tmp
Where Isnull(Tag2)=0 // condition a mettre si tu ne veux charger que lorsque Tag2 est non null
;
DROP TABLE Tab_tmp;
Bonjour Christian,
Merci pour cette réponse (ultra) rapide qui m'aide bien (et me redonne espoir d'arriver au bout ...).
Maintenant j'ai :
Il ne me reste plus qu'à trouver un moyen de ne garder que la ligne par Time qui m'intéresse. Si vous avez des idées c'est très volontier ...
Bonjour Christian,
Merci pour cette réponse (ultra) rapide qui m'aide bien (et me redonne espoir d'arriver au bout ...).
Maintenant j'ai :
Il ne me reste plus qu'à trouver un moyen de ne garder que la ligne par Time qui m'intéresse. Si vous avez des idées c'est très volontier ...
Bonjour
il semble qu'il y ait un pb.
Selon les sources décrites en entrée le résultat devrait être correct avec 1 record Tag1 et Tag2 par Time et non celui présenté qui est multiple.
Puis-je avoir les sources?
christian
J'ai testé avec ce code :
Test :
LOAD * INLINE [
tps, T1, T2
10, 111, 0
20, 222, 0
30, 333, 0
10, 0 , 444
20, 0 , 555
30, 0 , 666
]
;
Test3 :
noconcatenate
LOAD tps as Time, T1 as Tag1 Resident Test; // WHERE Isnull(T1)=0;
join
LOAD tps as Time, T2 as Tag2 Resident Test;
et le même sans les zéros. J'ai la même chose dans les 2 cas à affichage du zéro près..
J'ai testé avec ce code :
Test :
LOAD * INLINE [
tps, T1, T2
10, 111, 0
20, 222, 0
30, 333, 0
10, 0 , 444
20, 0 , 555
30, 0 , 666
]
;
Test3 :
noconcatenate
LOAD tps as Time, T1 as Tag1 Resident Test; // WHERE Isnull(T1)=0;
join
LOAD tps as Time, T2 as Tag2 Resident Test;
et le même sans les zéros. J'ai la même chose dans les 2 cas à affichage du zéro près..
Christian et Bobbyraj_sg,
Grâce à vos 2 réponses ça marche, merci beaucoup à tous les 2 !!!
J'ai plutôt chargé les données à partir d'excel pour simuler mes "-".
Au final le code correct est :
Test :
LOAD tps as Time,
T1,
T2
FROM
(biff, embedded labels, table is [Feuil1$]);
Test3 :
noconcatenate
LOAD Time, T1 as Tag1 Resident Test WHERE Isnull(T1)=0;
join
LOAD Time, T2 as Tag2 Resident Test WHERE Isnull(T2)=0;
Merci beaucoup pour votre réactivité à tous les 2. Vous m'avez bien aidé !!