Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
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
Not applicable
Author

un grand merci Christian car on se rapproche du résultat final. Comme tu dis j'ai adapté car j'avais déjà les heures et le flag on/off dans ma table d'origine.

Not applicable
Author

ah juste petit pb en faisant comme tu dis, j'ai perdu les PC qui ne sont jamais connectés qui n'ont pas de on/off et ça m'intéresse de les connaitre, que faut-il modifier pour les retrouver ?

Not applicable
Author

Bonjour Jacky

donc tu dois avoir quelque part une liste de tous tes PC je suppose.

utilise un nom spécifique lors du load tel que

LOAD

NomPC,

NomPC as Ref_PC,          // permet de garder les PC sous un nom de référence

...

Ensuite à la fin de ta procédure ajoute dans ta table finale

LOAD

NomPC ,

+ tes autres champs utiles

FROM ...

WHERE NOT exists (Ref_PC, NomPC)          // permet d'ajouter tous les PC qui ne sont pas déjà référencés dans la table finale et qui font partie de ta liste de référence

bonne journée

Christian

Not applicable
Author

bonjour Christian, grâce à ton aide précieuse je progresse.

j'ai fait ce que tu m'as dit mais ça ne le fait pas, ça ne rajoute pas les PC avec le WHERE NOT exists (Ref_PC, NomPC)

par contre si je mets :

concatenate

LOAD NomPC,

     Site,

     Salle

FROM  pcAD.qvd (qvd);

sans le where je les retrouve, comment se fait-il ? puis-je laisser ça comme ça ? ou alors il y a un pb sur le where ?

Not applicable
Author

Jacky

je ne sais pas comment est construit le script  donc je donne juste des pistes et non des réponses

Si tu as de base tous tes PC cela peut constituer un référentiel utilisable si tu passes par des tables temporaires pour faire les JOIN ou autres traitements. A la fin la table finale ne contient plus tous les PC donc faire appel au référentiel est le moyen de les récupérer mais si tu as tout ce référentiel n'est pas utile

Christian

Not applicable
Author

merci Christian, je pense arrivé au bout, il me reste encore 2 ou 3 trois petit soucis que je vais essayer de résoudre mais jusqu'à maintenant ça me semble correcte avec cette fin de script :

T5:

LOAD

    [Nom PC],

    Session,

    Date,

    if(len(HeureOn)=0 or IsNull(HeureOn), '08:00:00', HeureOn) as HeureOn,

    if(len(HeureOff)=0 or IsNull(HeureOff), '18:00:00', HeureOff) as HeureOff,

    Salle,

    Site,

    Jour,

    Semaine,

    Mois,

    Année

resident T4;

drop table T4;     

Concatenate

LOAD

     [Nom PC],

     Site,

     Salle,

     'NC' as HeureOn,

     'NC' as HeureOff

FROM  pcAD.qvd (qvd)

WHERE NOT exists ([Nom PC]) ;

Not applicable
Author

bonjour Christian,

encore un petit coup de main si tu veux bien.

tant que j'avais un logon et logoff associé pas de soucis mais il arrive temps en temps que j'ai l'un et pas l'autre et vice versa.

je pense avoir résolu le cas si j'ai un logon et pas un logoff mais je n'arrive pas à récupérer le contraire même en changeant le JOIN, as-tu une piste ?

Not applicable
Author

Bonjour Jacky

voici

bon courage

Christian

demoustier
Creator
Creator

Je ne sais pas quels sont les calculs à faire ensuite mais un moyen pourrais être de passer par le 'crosss table':

Tableau d'origine:

Nom_PC

SessionDateHeure_onHeure_off
LM1-CDR-A-002fcuser12121/05/201414:11:33
LM1-CDR-A-002fcuser12121/05/201415:05:27
LM1-CDR-A-002fcuser12121/05/201418:11:33
LM1-CDR-A-002fcuser12121/05/201419:05:27
LM1-CDR-A-001fcuser10020/05/201410:10:30
LM1-CDR-A-001fcuser10020/05/201411:05:20
LM1-CDR-A-003fcuser12321/05/201416:00:00
LM1-CDR-A-003fcuser12321/05/201419:05:00
LM1-CDR-A-004fcuser12422/05/201409:00:00
LM1-CDR-A-005fcuser12522/05/201411:00:00

script:

CrossTable(log_type, heure, 3)

LOAD Nom_PC,

     Session,

     Date,

     Heure_on,

     Heure_off

FROM

C:\Users\ho.bdemoustier\Desktop\logonloggoff.xlsx

(ooxml, embedded labels, table is Feuil1);

Tableau Final:

Nom_PCSessionDatelog_typeheure
LM1-CDR-A-001fcuser10020/05/2014Heure_on10:10:30
LM1-CDR-A-001fcuser10020/05/2014Heure_off11:05:20
LM1-CDR-A-002fcuser12121/05/2014Heure_on14:11:33
LM1-CDR-A-002fcuser12121/05/2014Heure_off15:05:27
LM1-CDR-A-003fcuser12321/05/2014Heure_on16:00:00
LM1-CDR-A-002fcuser12121/05/2014Heure_on18:11:33
LM1-CDR-A-003fcuser12321/05/2014Heure_off19:05:00
LM1-CDR-A-002fcuser12121/05/2014Heure_off19:05:27
LM1-CDR-A-004fcuser12422/05/2014Heure_on09:00:00
LM1-CDR-A-005fcuser12522/05/2014Heure_off11:00:00

ce n'est pas le résultat escompté mais cela permet d'effectuer a peu prés tout les calculs que l'on veut derriere non ? (nombre de connexion par PC, durée des connections,.....)

Not applicable
Author

bonjour Christian et un grand merci pour tout.

je pense être arrivé au bout.