Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
je veux calculer le nombre des agents entrants sortants d'une direction pour avoir les mouvements internes d'une entreprise. Donc j'ai utilisé la fonction previous comme ceci:
tmp_1:
LOAD MATRICULE,
DATE_DEB_TEMP,
DATE_FIN_TEMP,
MOTIF,DIRECTION,MOIS,ANNEE
Resident D;
left join(D_VUE_DAA)
ENTREES:
LOAD MATRICULE,
DATE_DEB ,DIRECTION,
If(MATRICULE=Peek(MATRICULE)and DIRECTION<>Peek(DIRECTION),1,0) as ENTREE
Resident tmp_1
Order By MATRICULE,MOIS,ANNEE,DATE_DEB;
Join
LOAD MATRICULE,
DATE_FIN_TEMP ,
MOTIF,DIRECTION,MOIS,ANNEE,
If(MATRICULE=Peek(MATRICULE)and DIRECTION<>Peek(DIRECTION),1) as SORTIE
Resident tmp_1
Order By MATRICULE,MOIS,ANNEE,DATE_FIN;
Drop Table tmp_1;
Ce script me retourne le résultat suivant c'est un pour tout les mois du changement. cette personne a changé la direction au milieu du mois de novembre donc je souhaite avoir previous direction X 1 sortie , direction Y actuel 1 entrée.
Merci
Salut,
Essaye en remplaçant Peek par Previous dans ton script et précise ta 2ème jointure:
tmp_1:
LOAD MATRICULE,
DATE_DEB_TEMP,
DATE_FIN_TEMP,
MOTIF,DIRECTION,MOIS,ANNEE
Resident D;
left join(D_VUE_DAA)
ENTREES:
LOAD MATRICULE,
DATE_DEB ,DIRECTION,
If(MATRICULE=Previous(MATRICULE)and DIRECTION<>Previous(DIRECTION),1,0) as ENTREE
Resident tmp_1
Order By MATRICULE,MOIS,ANNEE,DATE_DEB;
left join(D_VUE_DAA) //Join
LOAD MATRICULE,
DATE_FIN_TEMP ,
MOTIF,DIRECTION,MOIS,ANNEE,
If(MATRICULE=Previous(MATRICULE)and DIRECTION<>Previous(DIRECTION),1) as SORTIE
Resident tmp_1
Order By MATRICULE,MOIS,ANNEE,DATE_FIN;
Drop Table tmp_1;
Bonjour Sébastien,
je pense que ma question n'est pas clair .
En effet, j'ai le tableau suivant comme données :
Donc cette personne novembre 2017 elle était dans la direction DR et en décembre elle a fait un changement d'affectation donc pour moi je dois ajouter 1 juste dans le mois de changement par contre mon script et le tien me donne pour 1 pour tout les mois à partir de Décembre. Le tableau souhaité est le suivant.
Pour moi je dois ajouter dans mon
If(MATRICULE=Previous(MATRICULE)and DIRECTION<>Previous(DIRECTION) and MOIS-1=PREVIOUS (MOIS),1,0) as ENTREE
mais ca ne fonctionne pas