Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Je dois créer un canonical calendar pour me permettre de comparer des données avec des périmètres de dates différentes.
Dans mon cas, je cherche à avoir l'ensemble des missions reçues en N et l'ensemble des réclamations reçues sur l'année N.
Une mission peut-etre recue en N avec une réclamation en N+1.
Pour cela, je crois comprendre que je dois créer un canonicalcalendar. Et la je commence à être perdue. Pouvez-vous m'aider ?
Les dates concernées par ce calendrier sont :
- Date_Dossier : Correspondant à la date de ma mission
- Date_Heure_Creation : Correspondant à la date de ma réclamation
J'ai chargé mes deux tables :
Set dataManagerTables = '','suivi','gaq_suivi';
//This block renames script tables from non generated section which conflict with the names of managed tables
For each name in $(dataManagerTables)
Let index = 0;
Let currentName = name;
Let tableNumber = TableNumber(name);
Let matches = 0;
Do while not IsNull(tableNumber) or (index > 0 and matches > 0)
index = index + 1;
currentName = name & '-' & index;
tableNumber = TableNumber(currentName)
matches = Match('$(currentName)', $(dataManagerTables));
Loop
If index > 0 then
Rename Table [$(name)] to [$(currentName)];
EndIf;
Next;
LIB CONNECT TO [CapsOffice];
[suivi]:
LOAD
[Num_Dossier],
[Date_Dossier],
Year([Date_Dossier]) AS [Année_Dossier],
[Vehicule_Roulant],
[Id_Type_Incident],
[Id_Assureur] AS [suivi.Id_Assureur],
[Id_Garage] AS [suivi.Id_Garage],
[Mission_Premium],
[Mission_NMD],
[Mission_Hors_Reseau];
SQL SELECT `Num_Dossier`,
`Date_Dossier`,
`Vehicule_Roulant`,
`Id_Type_Incident`,
`Id_Assureur`,
`Id_Garage`,
`Mission_Premium`,
`Mission_NMD`,
`Mission_Hors_Reseau`
FROM `capsoffice`.`suivi`;
[gaq_suivi]:
LOAD
[Id_Reclamation],
[Num_Dossier],
[Id_Responsabilite],
[Id_Canal],
[Statut_Reclamation],
[Id_Garage] AS [gaq_suivi.Id_Garage],
[Id_Assureur] AS [gaq_suivi.Id_Assureur],
[Id_Type_Reclamation],
[Id_Identification],
[Date_Heure_Creation],
[Reclamation_Occurrence],
Year([Date_Heure_Creation]) AS [Année_creation_reclamation];
SQL SELECT `Id_Reclamation`,
`Num_Dossier`,
`Id_Responsabilite`,
`Id_Canal`,
`Statut_Reclamation`,
`Id_Garage`,
`Id_Assureur`,
`Id_Type_Reclamation`,
`Id_Identification`,
`Date_Heure_Creation`,
`Reclamation_Occurrence`
FROM `capsoffice`.`gaq_suivi`;
Un calendrier s'est créé automatiquement :
[autoCalendar]:
DECLARE FIELD DEFINITION Tagged ('$date')
FIELDS
Dual(Year($1), YearStart($1)) AS [Year] Tagged ('$axis', '$year'),
Dual('Q'&Num(Ceil(Num(Month($1))/3)),Num(Ceil(NUM(Month($1))/3),00)) AS [Quarter] Tagged ('$quarter', '$cyclic'),
Dual(Year($1)&'-Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [YearQuarter] Tagged ('$yearquarter', '$qualified'),
Dual('Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [_YearQuarter] Tagged ('$yearquarter', '$hidden', '$simplified'),
Month($1) AS [Month] Tagged ('$month', '$cyclic'),
Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [YearMonth] Tagged ('$axis', '$yearmonth', '$qualified'),
Dual(Month($1), monthstart($1)) AS [_YearMonth] Tagged ('$axis', '$yearmonth', '$simplified', '$hidden'),
Dual('W'&Num(Week($1),00), Num(Week($1),00)) AS [Week] Tagged ('$weeknumber', '$cyclic'),
Date(Floor($1)) AS [Date] Tagged ('$axis', '$date', '$qualified'),
Date(Floor($1), 'D') AS [_Date] Tagged ('$axis', '$date', '$hidden', '$simplified'),
If (DayNumberOfYear($1) <= DayNumberOfYear(Today()), 1, 0) AS [InYTD] ,
Year(Today())-Year($1) AS [YearsAgo] ,
If (DayNumberOfQuarter($1) <= DayNumberOfQuarter(Today()),1,0) AS [InQTD] ,
4*Year(Today())+Ceil(Month(Today())/3)-4*Year($1)-Ceil(Month($1)/3) AS [QuartersAgo] ,
Ceil(Month(Today())/3)-Ceil(Month($1)/3) AS [QuarterRelNo] ,
If(Day($1)<=Day(Today()),1,0) AS [InMTD] ,
12*Year(Today())+Month(Today())-12*Year($1)-Month($1) AS [MonthsAgo] ,
Month(Today())-Month($1) AS [MonthRelNo] ,
If(WeekDay($1)<=WeekDay(Today()),1,0) AS [InWTD] ,
(WeekStart(Today())-WeekStart($1))/7 AS [WeeksAgo] ,
Week(Today())-Week($1) AS [WeekRelNo] ;
DERIVE FIELDS FROM FIELDS [Date_Dossier], [Date_Heure_Creation] USING [autoCalendar] ;
Comment procéder à partir de ces éléments pour créer mon canonicalcalendar ?
Encore merci aux personnes qui pourront m'aider ?
Stéphanie
Salut Boris,
J‘ai dit expression, mais pour être plus précis j’aurai dû dire situation.
Par exemple, on ne pourra pas tracer le nombre de dossIer ouvert et le nombre de réclamation dans le même graphique en utilisant un axe temporel commun si on a pas le calendrier canonique à disposition.
Bonjour Sébastien,
Merci beaucoup pour l'exemple, dans une expression je pense qu'on peut régler le problème avec un "possible" ou un "exclude", mais en effet dans un graphique obligé de passer par ce type de calendrier.
Merci à toi pour l'explication
Salut,
Et un grand merci ! Cela fonctionne (presque!)
Allez encore une question :
Je veux compter le nombre de mission sur l'année N. J'ai testé deux formules :
=Count({<Mission_Hors_Reseau={'0'}>} distinct([Num_Dossier]))
-> elle fonctionne mais j'ai trop de dossiers.
=Count({Mission_Hors_Reseau={'0'},$< [Year_SDD] = {"$(=(Max([Year_SDD])))"} >} DISTINCT [Num_Dossier])
-> KO - Aucune donnée ne ressort.
A noter qu'en filtre j'ai mis sur l'année :
- Création d'une dimension "Année" : Year_DB
- Création d'une dimension "Mois" : Month_DB
Où est mon erreur/incompréhension ?
Merci,
Stéphanie
Le set analysis c’est : {$<champ1 = {valeur1}, champ2 = {valeur2}, ...>}
EM’essaye comme ça :
Count({$<Mission_Hors_Reseau={'0'}, [Year_SDD] = {"$(=(Max([Year_SDD])))"} >} DISTINCT [Num_Dossier])
Ok- Elle fonctionne cette formule avec des données conformes sur les volumes à l'année, mais uniquement pour l'année au niveau du filtre.
Avec ma dimension Month_DB, les résultats au mois ne sont pas conformes. As-tu une idée de mon nouveau problème ?
En gros, j'ai le bon nombre de missions en Janvier mais les mois suivants : soit j'en ai trop, soit pas assez...
😞
il faut ajouter dans le set analysis un filtre sur le champ DateType, sinon tu as des dossiers qui ont des réclamations dans le mois que tu as selectionné. Attention, il ne faut pas oublier que le calendrier canonique et lié au 2 dates
essaye comme ça:
Count({$<Mission_Hors_Reseau={'0'}, [Year_SDD] = {"$(=(Max([Year_SDD])))"} , DateType = {'Date_Dossier'}>} DISTINCT [Num_Dossier])
Super ! Merci beaucoup! Cela fonctionne parfaitement.
J'ai voulu reproduire pour calculer mon volume de réclamation, et je dois encore avoir une coquille dans ma formule.
Peux-tu y jeter un oeil ? Si je dois faire pareil pour N-1
Count({$<[Id_Reclamation],
[Id_Type_Reclamation]={'QG'},
[Reclamation_Occurrence]={'1'},
[Id_Responsabilite]={'1','22'},
[Id_Canal]={'3','8','9'},[Year_SDR] = {"$(=(Max([Year_SDR])))"} , DateType = {'Date_Heure_Creation'}>}
Distinct [Num_Dossier])
Si je dois faire pareil pour N-1 avec cette formule, je m'y prends comment :
Count({$<Mission_Hors_Reseau={'0'}, [Year_SDD] = {"$(=(Max([Year_SDD])))"} , DateType = {'Date_Dossier'}>} DISTINCT [Num_Dossier])
Bonjour Stéphanie,
J'utilise régulièrement l'objet "Indicateur KPi" pour vérifier mes Set Analylis
Dans la formule ci-dessous ce qui nous intéresse c'est l'aspect du N / N-1
Count({$<Mission_Hors_Reseau={'0'}, [Year_SDD] = {"$(=(Max([Year_SDD])))"} , DateType = {'Date_Dossier'}>} DISTINCT [Num_Dossier])
Tu peux ajouter la partie en gras dans un objet "Indicateur KPi"
=(Max([Year_SDD])) ==> doit te donner "2018"
=(Max([Year_SDD]))-1 ==> doit te donner "2017"
En ajoutant "-1" comme ci-dessus tu devrait avoir le résultat que tu désire
Essaye la formule ci-dessous
Count({$<Mission_Hors_Reseau={'0'}, [Year_SDD] = {"$(=(Max([Year_SDD]))-1)"} , DateType = {'Date_Dossier'}>} DISTINCT [Num_Dossier])
Exact ! Cela fonctionne pour 2017 et 2018.
Par contre si je veux comparer 2016 et 2015, cela ne fonctionne pas..
Je suis sur que tu as un autre tuyau à me filer...
Comme tu utilise le champ " [Year_SDD] " dans ton set si tu crée un filtre avec ce même champs et que tu choisis l'année 2016 dans ton filtre, ton expression avec "Max(Year_SDD)" sera calculer sur l'année 2016 et ton expression avec "Max(Year_SDD)-1" sera calculer sur l'année 2015