Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Graphique - Affichage de tous les mois sans données

Bonjour,

J'ai un graphique affichant les résultats mensuels par année.

Dimensions : 'Month' (mois), 'Year' (année)

Expression : Ventes = SUM(Sales)

J'ai la possibilité de sélectionner un mois, une année, un client, un pays, etc. pour filtrer mon résultat.

Je souhaite, lorsque je sélectionne l'une de ces dimensions, que le graphique affiche toujours tous les mois de l'année mais avec les données correspondantes à ma sélection.

J'ai coché, sur ma dimension 'Month', la case "Afficher toutes les valeurs".

A l'apparition d'un nouveau champs '-' dans ma liste de mois et d'années, j'ai également coché la case "Supprimer si la valeur est nulle" dans 'Month', sans rien changé dans 'Year'.

Month.PNG.pngscreenshot.2.png

J'obtiens le résultat suivant qui, en dehors d'un champs supplémentaire vide dans 'Year', correspond au résultat recherché :

screenshot.1.png

Je ne comprends pas d'où vient le '-' dans la liste 'Year'. Si je coche la case "Supprimer si la valeur est nulle", on revient à l'affichage initial où seuls les mois concernés par la sélection s'affichent.

J'ai essayé avec un Set Analysis mais cela ne rend pas le résultat recherché puisque ça fige les données en plus des dimensions.

Je joins l'application pour plus de clarté.

Merci d'avance de votre aide.

2 Replies
Anonymous
Not applicable
Author

Une solution consiste à créer un Calendrier comme ceci:

// Création d'un calendrier

QuartersMap: 

MAPPING LOAD  

rowno() as Month, 

'Trimestre ' & Ceil (rowno()/3) as Quarter 

AUTOGENERATE (12);

    

Temp: 

Load 

    year(min(DateSales)) as minDate, 

       year(max(DateSales)) as maxDate

Resident Sales;

     

Let varMinDate = num(MakeDate(Peek('minDate', 0, 'Temp'),1,1)); 

Let varMaxDate = num(MakeDate(Peek('maxDate', 0, 'Temp'),12,31));

DROP Table Temp; 

TempCalendar: 

LOAD 

    $(varMinDate) + Iterno()-1 As Num, 

    Date($(varMinDate) + IterNo() - 1) as TempDate 

    AutoGenerate 1 While $(varMinDate) + IterNo() -1 <= $(varMaxDate); 

CalendarSales:

Load 

    TempDate AS DateSales, 

    week(TempDate) As Week, 

    Year(TempDate) As Year, 

    Month(TempDate) As Month, 

    Day(TempDate) As Day, 

    YeartoDate(TempDate)*-1 as CurYTDFlag, 

    YeartoDate(TempDate,-1)*-1 as LastYTDFlag, 

    inyear(TempDate, Monthstart($(varMaxDate)),-1) as RC12, 

    date(monthstart(TempDate), 'MMM YYYY') as MonthYear, 

    ApplyMap('QuartersMap', month(TempDate), Null()) as Quarter, 

    Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as WeekYear, 

    WeekDay(TempDate) as WeekDay 

Resident TempCalendar 

Order By TempDate ASC;

Drop Table TempCalendar;

Cet exemple est lissé du 1er janvier de la première année au 31 décembre de la dernière année pour le cas où la table de faits de soit que sur une seule année incomplète.

A partir de là on travaille sur les dimensions Month et Year de la table CalendarSales, Puis dans Propriétés > Dimensions > Month on coche "Supprimer si la valeur est nulle" et "Afficher toutes les valeurs", puis dans présentation on coche "Supprimer les valeurs nulles".

C'est comme ça que je suis parvenu à résoudre ce problème en sachant que je n'utilise que la dimension Month.

Not applicable
Author

Merci de la réponse.

J'ai testé avec la création d'un calendrier mais cela ne règle pas mon souci...