Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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'.
J'obtiens le résultat suivant qui, en dehors d'un champs supplémentaire vide dans 'Year', correspond au résultat recherché :
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.
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.
Merci de la réponse.
J'ai testé avec la création d'un calendrier mais cela ne règle pas mon souci...