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

regrouper lignes enregistrements

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 PCSessionDateHeureOnHeureOff
LM1-CDR-A-002fcuser12121/05/201414:11:33-
LM1-CDR-A-002fcuser12121/05/2014-15:05:27
32 Replies
almamy_diaby
Creator
Creator

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.


Not applicable
Author

désolé mais ça ne regroupe pas les lignes comme je le veux

Not applicable
Author

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 ?

Not applicable
Author

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

Not applicable
Author

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

Not applicable
Author

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 ?

Not applicable
Author

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
Not applicable
Author

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

Not applicable
Author

Voici  un exemple  à adapter à tes besoins

christian

Not applicable
Author

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.