Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
ArnaudTML
Contributor II
Contributor II

Calculer un âge / une ancienneté avec des dates glissantes

Bonjour,

J'ai une table Salarié avec les dates de naissance et les dates d'entrée dans la société.

Je souhaiterai catégoriser selon la tranche d'âge / la tranche d'ancienneté. Je suppose que la base de calcul est la même pour les deux aspects.

J'ai donc un tableau croisé dynamique avec la situation au 31/12 des 3 dernières années. Mais quand je compare la date anniversaire / d'entrée avec la date de la colonne, aucun résultat n'est affiché. D'où peut provenir l'erreur ?

EXPRESSION DE LA MESURE :
Count({$<num(ContratTravailDateEntreeReference)={">$(vDateAnciennete1An)"}>}%ContratTravailID)

VARIABLE vDateAnciennete1An :
num(AddMonths(MakeDate(Année,Mois,Jour),(-12*1)))

 

16 Replies
Seyko
Partner - Creator
Partner - Creator

Une valeur est renvoyée sur le Total par sexe (donc l'expression semble correcte). Faudrait peut-être explorer plutôt du côté des tranches d'âge/ ancienneté. C'est une dimension calculée je suppose?
Si c'est le cas, essaie plutôt de la définir depuis le script (si possible) et tu utilises une fonction Aggr pour ton Count dans le tableau croisé dynamique :
Aggr(Count( {$< ContratTravailDateEntreeReference = {" > $( = $(vDateAnciennete1An) ) "} >} %SalarieID), <le champ des tranches>)
Excuse my english, i'm french!
ArnaudTML
Contributor II
Contributor II
Author

J'ai l'impression que je suis passé à côté de quelque chose au départ...

De manière générale, si j'ai des dates de naissance ou des dates d'embauches, si je fais un filtre sur plusieurs années, comment puis-je calculer des dates anniversaire dans un tableau croisé dynamique selon la sélection ?

christophebrault
Specialist
Specialist

Bonjour,

 

Je pense qu'il faut préparer les données dans le script pour ton besoin. Donc avoir pour chaque fin d'année la situation du salarié avec son âge et son ancienneté.

Tu auras par exemple 3 lignes pour un salarié entré avant 2016.

Voici un script d'exemple :

SalariésTmp:
load * Inline [
SalarieId,DateNaissance,DateEntree
A,21/02/1975,20/03/2015
B,12/07/1990,12/04/2016
C,11/11/1985,02/03/2018
];
join(SalariésTmp)
load * Inline [
Année
31/12/2016
31/12/2017
31/12/2018
];

NoConcatenate
Salariés:
Load *,
ceil(age(Année,DateEntree)) as Ancienneté,
ceil(age(Année,DateNaissance)) as AgeSalarié

resident SalariésTmp
where DateEntree<=Année;

drop table SalariésTmp;

 

Dans un TCD, tu mets Ancienneté et Année en dimension, et Count(SalarieId) en Mesure.

 

A ta disposition si tu veux plus d'explication

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
ArnaudTML
Contributor II
Contributor II
Author

Merci, j'avais pensé faire ainsi mais comme il y a la possibilité que les stats soient faites à n'importe quelle fin de mois, ça va faire beaucoup...

christophebrault
Specialist
Specialist

Bonjour,

Même si tu garde 5 ans d'historique dans ton application et que tu a 100 000 salariés, ça ne fait que 6 millions de lignes, ce qui est largement gérable en terme de volumétrie.
Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
ArnaudTML
Contributor II
Contributor II
Author

Je reviens pour dire que c'est cette solution qui a été utilisé. A chaque fin de mois, j'ai la situation de la personne.

Merci pour ton aide !
christophebrault
Specialist
Specialist

Merci pour ton retour 🙂

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin