Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik and ServiceNow Partner to Bring Trusted Enterprise Context into AI-Powered Workflows. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
serge__g
Contributor III
Contributor III

Tableau avec mois sans mesure

Bonjour à  tous,

Dans un graphe, où figure le nombre d'incidents par mois, comment afficher les mois qui n'ont pas de mesure (d'incident).

Exemple :
Janv 3 incidents
Fevrier 1 incident
Avril 4 incidents
comment avoir Mars 0 incident sans creer cette ligne dans la table des incidents ?
Sachant que mes abscisses sont les An et Mois d'incidents et les ordonnées le nombre d'incidents
Merci

2 Solutions

Accepted Solutions
SRA
Partner - Creator
Partner - Creator

Bonjour,

Avez vous un calendrier dans votre modèle de données ? Si vous n'en avez pas, je vous conseille d'en ajouter un en générant les dates entre votre min et votre max de date de "faits". La date de vos faits doit être liée au calendrier, les différents formats (mois, mois année...) de dates sont gérés dans la table calendrier.

Ensuite, vous pouvez créer votre tableau en utilisant le "mois" provenant de votre calendrier. Il faut activer l'option "include zero values" dans Add-ons/Data handling :

SRA_1-1745392514759.png

Résultat:

SRA_0-1745392485708.png

Modèle de données:

SRA_2-1745392926467.png

Contenu des tables :

SRA_3-1745392951371.png

SRA_4-1745392969262.png

Exemple de script chargeant le modèle utilisé pour l'exemple avec la génération d'un calendrier :

F_Fact:
Load 
    Date(%Key_Calendar)  as %Key_Calendar 
,   Num(Nb_Incident)     as Nb_Incident
Inline [
%Key_Calendar, Nb_Incident
15/01/2025, 100
15/02/2025, 75
15/04/2025, 90
];
 
// Recherche de la date Min et Max dans la table de faits
[T_MinMaxDate]:
Load
   Min(%Key_Calendar) as Tmp_DateMin,
   Max(%Key_Calendar) as Tmp_DateMax
Resident F_Fact;
 
Let sDateMin = Peek('Tmp_DateMin');
Let sDateMax = Peek('Tmp_DateMax');
Drop Table [T_MinMaxDate];
 
// Génération des dates dans la tranche Min-Max
[T_Calendrier]:
Load
$(sDateMin)+RowNo()-1 as CalendarDate
AutoGenerate $(sDateMax)-$(sDateMin)+1;
 
Set sDateMin = ;
Set sDateMax = ;
 
// Construction du calendrier et des différentes dimensions de calendrier
[D_Calendrier]:
Load distinct
    CalendarDate            as %Key_Calendar, 
    Date(CalendarDate)      as Cal_Date, 
    Year(CalendarDate)      as Cal_Annee,
    MonthName(CalendarDate) as Cal_MoisAnnee 
Resident [T_Calendrier]
Order By CalendarDate asc;
 
Drop Table [T_Calendrier];

 

Cordialement

SRA

View solution in original post

SRA
Partner - Creator
Partner - Creator

Bonjour,

Dans ce cas, si vous souhaitez voir apparaitre les machines qui ont 0 incidents sur un mois, j'ajouterais dans les faits des entrées à 0.

Cordialement,

SRA

View solution in original post

4 Replies
SRA
Partner - Creator
Partner - Creator

Bonjour,

Avez vous un calendrier dans votre modèle de données ? Si vous n'en avez pas, je vous conseille d'en ajouter un en générant les dates entre votre min et votre max de date de "faits". La date de vos faits doit être liée au calendrier, les différents formats (mois, mois année...) de dates sont gérés dans la table calendrier.

Ensuite, vous pouvez créer votre tableau en utilisant le "mois" provenant de votre calendrier. Il faut activer l'option "include zero values" dans Add-ons/Data handling :

SRA_1-1745392514759.png

Résultat:

SRA_0-1745392485708.png

Modèle de données:

SRA_2-1745392926467.png

Contenu des tables :

SRA_3-1745392951371.png

SRA_4-1745392969262.png

Exemple de script chargeant le modèle utilisé pour l'exemple avec la génération d'un calendrier :

F_Fact:
Load 
    Date(%Key_Calendar)  as %Key_Calendar 
,   Num(Nb_Incident)     as Nb_Incident
Inline [
%Key_Calendar, Nb_Incident
15/01/2025, 100
15/02/2025, 75
15/04/2025, 90
];
 
// Recherche de la date Min et Max dans la table de faits
[T_MinMaxDate]:
Load
   Min(%Key_Calendar) as Tmp_DateMin,
   Max(%Key_Calendar) as Tmp_DateMax
Resident F_Fact;
 
Let sDateMin = Peek('Tmp_DateMin');
Let sDateMax = Peek('Tmp_DateMax');
Drop Table [T_MinMaxDate];
 
// Génération des dates dans la tranche Min-Max
[T_Calendrier]:
Load
$(sDateMin)+RowNo()-1 as CalendarDate
AutoGenerate $(sDateMax)-$(sDateMin)+1;
 
Set sDateMin = ;
Set sDateMax = ;
 
// Construction du calendrier et des différentes dimensions de calendrier
[D_Calendrier]:
Load distinct
    CalendarDate            as %Key_Calendar, 
    Date(CalendarDate)      as Cal_Date, 
    Year(CalendarDate)      as Cal_Annee,
    MonthName(CalendarDate) as Cal_MoisAnnee 
Resident [T_Calendrier]
Order By CalendarDate asc;
 
Drop Table [T_Calendrier];

 

Cordialement

SRA

serge__g
Contributor III
Contributor III
Author

merci en effet cela me parait tout à fait logique

serge__g
Contributor III
Contributor III
Author

Cette solution me permet en effet d'avoir les jours sans incident, par contre j'ai oubié de preciser que mon tableau d'incident j ai sur un parc de 4 machines  :

01/01/2025 1 incident sur machine 1
05/01/2025 1 incident sur machine 1
21/01/2025 1 incident sur machine 4

01/02/2025 1 incident sur machine 2


05/03/2025 1 incident sur machine 3
11/01/2025 1 incident sur machine 2

comment avoir un tableau de la sorte

janv     machine1     2
janv     machine2     0
janv     machine3     0
janv     machine4     1

fev      machine1     0
fev     machine2     1
fev     machine3     0
fev     machine4     0

mars      machine1     0
mars     machine2     1
mars     machine3     1
mars     machine4     0

 

Merci
  

SRA
Partner - Creator
Partner - Creator

Bonjour,

Dans ce cas, si vous souhaitez voir apparaitre les machines qui ont 0 incidents sur un mois, j'ajouterais dans les faits des entrées à 0.

Cordialement,

SRA