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

Calcul taux occupation

Bonjour

J’ai 2 tables : une table calendrier qui contient une ligne par jour calendaire avec pour chaque date, le mois, l’année, le jour de la semaine, ….

Une table « occupation » qui contient une ligne par service, sejour et date d’occupation dans un service : par exemple pour un sejour du 10 au 15 avril dans le service X j’aurais 5 ligne, une pour le 10, une pour le 11, …

Ces 2 tables sont reliés grâce a une clef basé sur l’égalité occupation.date_occupation = calendrier.date

Les champs année, mois, jour du mois et jour de la semaine de la table calendrier sont en liste de sélection.

Je fais en sorte que l’on ne puisse sélectionner qu’une seule année à la fois.

Dans des tableaux je présente le nombre de présents et le taux d’occupation.

Je veux dans un tableau croisé dynamique présenté  le taux d’occupation par mois avec les services en lignes et les mois en colonne

En utilisant cette expression : count ({ <CALEND_ANNEE ={$(= CALEND_ANNEE)}>}  distinct  CALEND_DATE)

je n’arrive à calculer que le nombre de jour de présence : si au mois de janvier il n’y a eu des présents que 25 jours au mois de janvier j’obtiens 25  jours alors que je dois obtenir 31 jours.

En ajoutant total après distinct j’obtiens tous les jours de la période sélectionnée et non pas celle du mois.

Pour obtenir ce que je veux je dois créer un tableau simple avec le service en dimension et ensuite je crée une expression pour chaque mois, ce qui est peu maintenable

Pour calculer le nombre de présents :

Count ( { <CALEND_OCCUP_ANNEE ={$(=GetFieldSelections(CALEND_OCCUP_ANNEE))},  aband = {0}, CALEND_OCCUP_MOIS={"mois_concerné"}>}    OCCUP_DATE_OCCUP)

Pour compter le nombre de place  de ce même mois :

count( { <CALEND_OCCUP_ANNEE ={$(=CALEND_OCCUP_ANNEE)},  CALEND_OCCUP_MOIS={" mois_concerné"}>}  distinct total CALEND_OCCUP_DATE)  * OCCUP_NB_LIT

Y a-t-il une façon plus simple de procéder ?

Merci par avance pour votre aide

7 Replies
Not applicable
Author

Pouvez-vous préciser ce que vous attendez, je ne comprends pas :

daniele leibovici a écrit:

je n’arrive à calculer que le nombre de jour de présence : si au mois de janvier il n’y a eu des présents que 25 jours au mois de janvier j’obtiens 25  jours alors que je dois obtenir 31 jours.

A quoi correspond le "31", pouvez-vous donner la formule de calcul qui permette d'arriver à ce résultat ?

t_moutault
Contributor III
Contributor III

Bonjour Daniele,

il faut que tu utilises la fonction intervalMatch dont tu trouveras toute les informations dans l'aide de qlikview.

Bon courage pour la suite.

christophebrault
Specialist
Specialist

Bonjour,

Pour avoir le nombre de jour en fonction du mois dans ton tableau, tu peux juste ajouter un champs à ton calendrier :

Day(MonthEnd(Date)) as NbJour

Cette expression renvoie le numéro du dernier jour du mois de la date.

Dans ton tableau, si tu fais :

Only(NbJour)

Tu auras le nombre de jours du mois. (il faut le mois en dimension)

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

Bonjour

Merci pour toutes vos réponses

Je vais tester et je vous tiens au courant

De : Christophe Brault

Envoyé : jeudi 27 mars 2014 12:29

À : daniele leibovici

Objet : Re: - Calcul taux occupation

<http://community.qlik.com/> Qlik Community

Calcul taux occupation

reply from Christophe <http://community.qlik.com/people/christophebrault?et=watches.email.thread> Brault in Groupe des Utilisateurs Francophones - View <http://community.qlik.com/message/497026?et=watches.email.thread#497026> the full discussion

Not applicable
Author

Bonjour et merci pour votre réponse

31 est le nombre de jour du mois de janvier

Je dois calculer le taux d’occupation qui est nombre présent / nombre de place pour une période (1 mois, 1 jour, 1 an, …)

Et le nombre de place pour une période c’est le nombre de place *nb jour période

Si pour 1 ou plusieurs jours donnés il n’y a pas de présent dans un service, ce ou ces jours n’apparaitront pas dans ma table des présents

Je calcule donc le nombre de jour sur la table calendrier mais a cause du lien le nombre de jour est le nombre de jour où il y a des presents

Finalement j’ai fait un tableau avec le service en dimension

Et pour les expressions c’est une pour chaque mois ce qui est peu maintenable !

Pour calculer le nombre de présents :

Count ( { <CALEND_OCCUP_ANNEE ={$(= CALEND_OCCUP_ANNEE)}, aband = , CALEND_OCCUP_MOIS={"mois_concerné"}>} OCCUP_DATE_OCCUP)

Pour compter le nombre de place de ce même mois :

count( { } distinct total CALEND_OCCUP_DATE) * OCCUP_NB_LIT

cordialement.

De : Loïc AXILAIS

Envoyé : jeudi 27 mars 2014 12:03

À : daniele leibovici

Objet : Re: - Calcul taux occupation

<http://community.qlik.com/> Qlik Community

Calcul taux occupation

reply from Loïc <http://community.qlik.com/people/laxilais?et=watches.email.thread> AXILAIS in Groupe des Utilisateurs Francophones - View <http://community.qlik.com/message/496993?et=watches.email.thread#496993> the full discussion

Not applicable
Author

Voici une proposition :

3 tables : la table SERVICE indique le nombre de lits disponibles par service, la table CALENDRIER reprend les différentes dates (je n'ai mis que 2 mois pour ne pas trop alourdir le message) et la table OCCUPATION indiquant quel lit est pris sur quelle période.

SERVICE:
LOAD * INLINE
[
    CodeService, NomService, NbLit
    1, service 1, 10
    2, service 2, 15
    3, service 3, 20
    4, service 4, 17
    5, service 5, 12
];

CALENDRIER:
LOAD * INLINE [
DATE, JOUR, MOIS, ANNEE
01/01/2014, 1, 1, 2014
02/01/2014, 2, 1, 2014
03/01/2014, 3, 1, 2014
04/01/2014, 4, 1, 2014
05/01/2014, 5, 1, 2014
06/01/2014, 6, 1, 2014
07/01/2014, 7, 1, 2014
08/01/2014, 8, 1, 2014
09/01/2014, 9, 1, 2014
10/01/2014, 10, 1, 2014
11/01/2014, 11, 1, 2014
12/01/2014, 12, 1, 2014
13/01/2014, 13, 1, 2014
14/01/2014, 14, 1, 2014
15/01/2014, 15, 1, 2014
16/01/2014, 16, 1, 2014
17/01/2014, 17, 1, 2014
18/01/2014, 18, 1, 2014
19/01/2014, 19, 1, 2014
20/01/2014, 20, 1, 2014
21/01/2014, 21, 1, 2014
22/01/2014, 22, 1, 2014
23/01/2014, 23, 1, 2014
24/01/2014, 24, 1, 2014
25/01/2014, 25, 1, 2014
26/01/2014, 26, 1, 2014
27/01/2014, 27, 1, 2014
28/01/2014, 28, 1, 2014
29/01/2014, 29, 1, 2014
30/01/2014, 30, 1, 2014
31/01/2014, 31, 1, 2014
01/02/2014, 1, 2, 2014
02/02/2014, 2, 2, 2014
03/02/2014, 3, 2, 2014
04/02/2014, 4, 2, 2014
05/02/2014, 5, 2, 2014
06/02/2014, 6, 2, 2014
07/02/2014, 7, 2, 2014
08/02/2014, 8, 2, 2014
09/02/2014, 9, 2, 2014
10/02/2014, 10, 2, 2014
11/02/2014, 11, 2, 2014
12/02/2014, 12, 2, 2014
13/02/2014, 13, 2, 2014
14/02/2014, 14, 2, 2014
15/02/2014, 15, 2, 2014
16/02/2014, 16, 2, 2014
17/02/2014, 17, 2, 2014
18/02/2014, 18, 2, 2014
19/02/2014, 19, 2, 2014
20/02/2014, 20, 2, 2014
21/02/2014, 21, 2, 2014
22/02/2014, 22, 2, 2014
23/02/2014, 23, 2, 2014
24/02/2014, 24, 2, 2014
25/02/2014, 25, 2, 2014
26/02/2014, 26, 2, 2014
27/02/2014, 27, 2, 2014
28/02/2014, 28, 2, 2014
];

OCCUPATION:
LOAD * INLINE [
    DATE, CodeService, Periode, NumeroLit
    01/01/2014, 1, Du 1 au 5 janvier 2014,1
    02/01/2014, 1, Du 1 au 5 janvier 2014,1
    03/01/2014, 1, Du 1 au 5 janvier 2014,1
    04/01/2014, 1, Du 1 au 5 janvier 2014,1
    05/01/2014, 1, Du 1 au 5 janvier 2014,1
    03/01/2014, 1, Du 3 au 6 janvier 2014,2
    04/01/2014, 1, Du 3 au 6 janvier 2014,2
    05/01/2014, 1, Du 3 au 6 janvier 2014,2
    06/01/2014, 1, Du 3 au 6 janvier 2014,2
];

Ajouter un tableau croisé dynamique avec les caractéristiques suivantes :

Dimension :

- NomService

- MOIS

Expression :

- Occupation réelle  = count(NumeroLit)

- Occupation possible = only(NbLit)*day(monthend(makedate(getfieldselections(ANNEE), ColumnNo(), 1)))

- Taux = [Occupation réelle]/[Occupation possible]*100

Basculer le champ MOIS en colonne et normalement vous devriez obtenir quelque chose d'assez proche de ce que vous recherchez.

Not applicable
Author

Merci beaucoup

Je vais tester et vous tiens au courant

De : Loïc AXILAIS

Envoyé : vendredi 28 mars 2014 10:13

À : daniele leibovici

Objet : Re: - Calcul taux occupation

<http://community.qlik.com/> Qlik Community

Calcul taux occupation

reply from Loïc <http://community.qlik.com/people/laxilais?et=watches.email.thread> AXILAIS in Groupe des Utilisateurs Francophones - View <http://community.qlik.com/message/497806?et=watches.email.thread#497806> the full discussion