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 |
Jacky
2 solutions
1. dans le script charger la table en 2 fois avec les on puis concatenate ou join avec le off
2.mettre HeureOn en dimension et only(HeureOff) en expression
christian
la solution 1 m'intéresse plus mais je ne comprends pas car avec le concatenate cela met les lignes Off après les lignes On comme à l'origine donc pas le résultat recherché :
final:
LOAD
| |||||||||||
FROM baseTemp.qvd (qvd); |
Concatenate
LOAD
[Nom PC], | |
Session, | |
Date, | |
HeureOff |
FROM baseTemp.qvd (qvd);
ou alors il me manque quelque chose ?
HeureOn et HeureOff doivent avoir le même nom je pense.
En SQL ca serai dans le même style qu'un UNION
Bravo
je suis allé un peu vite dans ma réponse et j'ai oublié ce point
christian
non HeureOn et HeureOff ne peuvent pas avoir le même nom car ça sera la même colonne et après je ne pourrais pas faire des calculs sur les 2 colonnes
ou alors il faut faire un Join entre les chargements mais un Join sur les 3 premiers champs !!!! et moi je ne sais faire q'un Join sur le 1er champ
Jacky le JOIN est automatique sur le nom et le contenu des champs
final:
LOAD
| |||||||||||
FROM baseTemp.qvd (qvd); |
JOIN
LOAD
[Nom PC], | |
Session, | |
Date, | |
HeureOff |
FROM baseTemp.qvd (qvd);
désolé mais même avec le join ça ne regroupe pas les lignes dans ma table
je vois deux moyens
1. soit tu fais un group by sur la table obtenu après traitement
Final1:
LOAD
[Nom PC], | ||||||||
Session, | ||||||||
Date, | ||||||||
max(HeureOff) as HeureOff, max(HeureOn) as Heureon resident final group by
|
2. Soit tu charges une table de mapping
map_heureoff:
mapping load [Nom PC] &'_' &Session&'_' &Date, HeureOff
FROM baseTemp.qvd (qvd);
puis ensuite tu utilises cette table de mapping
LOAD
[Nom PC],
Session,
Date,
HeureOn,
ApplyMap('map_heureoff',[Nom PC] &'_' &Session&'_' &Date) as HeureOff
FROM baseTemp.qvd (qvd);