Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
bonjour,
j'ai une table qui contient les champs suivants :
Nom PC
Session
Date
HeureOn
HeureOff
qui correspond aux connexions et aux déconnexions des utilisateurs sur leur PC.
Le problème c'est que j'ai une ligne pour le On et une autre ligne pour le Off alors que je voudrais avoir pour un PC et une Session et à une Date le On et le Off sur la même ligne. Comment regrouper les lignes, j'imagine qu'il faut que je reload ma table, mais comment faire ?
Nom PC | Session | Date | HeureOn | HeureOff |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | 14:11:33 | - |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | - | 15:05:27 |
Essaie ce code , ça devrait normalement t'aider
Table1:
Load distinct
Nom PC,
Session,
Date,
HeureOn
From Table_source where len(HeureOn)>0;
inner join
Table2:
Load distinct
Nom PC,
Session,
Date
HeureOff
From Table_source where len(HeureOff)>0;
NB: Table_source est le même pour Table1 et Table2. On ne fait que une lecture de la même table Source
mais en s'interessant à des champs specifique.
désolé mais ça ne regroupe pas les lignes comme je le veux
merci Philippe, on se rapproche, j'ai utilisé l'ApplyMap et ça fonctionne lorsque j'ai un HeureOn et un HeureOff sur la journée pas de soucis mais si j'ai eu trois HeureOn et trois HeureOff sur la même journée je me retrouve avec 3 HeureOn et 1 seul HeureOff après l'applimap, comment y remédier ?
Oui c'est normal,
en fait pour que la jointure fonctionne correctement il faudrait un identifiant correspondant à la ligne HeureOn et HeureOff
ex :
Id, NomPC, Session, Date, HeureOn, HeureOff
1, LM1-CDR-A-002, fcuser121, 21/05/2014, 14:11:33,
1, LM1-CDR-A-002, fcuser121, 21/05/2014, , 15:05:25
2, LM1-CDR-A-002, fcuser121, 21/05/2014, 18:10:18,
2, LM1-CDR-A-002, fcuser121, 21/05/2014, , 18:15:22
comme ca la jointure se fait comme il faut et associe l'heure de début et fin du bon user au bon moment
christian
Jacky,
la solution pourrait venir au moment ou tu construits ta table de mapping
si au lieu de faire
map_heureoff:
mapping load [Nom PC] &'_' &Session&'_' &Date, HeureOff
FROM baseTemp.qvd (qvd);
tu fais
map_heureoff:
mapping load [Nom PC] &'_' &Session&'_' &Date, max(HeureOff)
FROM baseTemp.qvd (qvd)
group by [Nom PC] &'_' &Session&'_' &Date;
tu devrais récupérer l'heure la plus grande
oui je comprends mais je n'ai pas cet ID et en essayant de le récréer en utilisant ça par exemple [Nom PC] &'_' &Session&'_' &Date ça ne correspond pas à l'objectif, comment créer cet ID sachant que l'on peut avoir plusieurs connexion sur une journée ?
désolé mais ce n'est pas l'heure la plus grande qu'il faut, mais faire correspondre l'heureOn avec l'heureOff en l'ayant plusieurs fois dans la journée.
ex :
NomPC, Session, Date, HeureOn, HeureOff
LM1-CDR-A-002, fcuser121, 21/05/2014, 14:11:33,
LM1-CDR-A-002, fcuser121, 21/05/2014, , 15:05:25
LM1-CDR-A-002, fcuser121, 21/05/2014, 18:10:18,
LM1-CDR-A-002, fcuser121, 21/05/2014, , 18:15:22
devrait donner :
LM1-CDR-A-002, fcuser121, | 21/05/2014, | 14:11:33, 15:05:25 |
LM1-CDR-A-002, fcuser121, | 21/05/2014, | 18:10:18, 18:15:22 |
le probleme est plus complexe effectivement si tu dois lire les données comme ca ...
le seul truc que je vois est de faire une bonne lecture séquentielle de la table afin de faire correspondre la date de fin à la date de début qui précède
regarde la pièce attachée
Voici un exemple à adapter à tes besoins
christian
merci Philippe mais l'inconvénient de cette solution c'est le temps de chargement qui devient long donc je vais plutôt m'orienter vers la solution ce Christian.