Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
stephaniee
Creator
Creator

Canonical Date

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

Labels (1)
26 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

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.

Anonymous
Not applicable

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

stephaniee
Creator
Creator
Author

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

sfatoux72
Partner - Specialist
Partner - Specialist

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])

stephaniee
Creator
Creator
Author

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...

😞

sfatoux72
Partner - Specialist
Partner - Specialist

‌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])

stephaniee
Creator
Creator
Author

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])


Anonymous
Not applicable

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])

stephaniee
Creator
Creator
Author

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...

Anonymous
Not applicable

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