Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Après avoir parcouru la communauté, je n'ai pas réussi à faire ma moyenne de somme.
En base j'ai des dossiers avec 2 flags créé et résolu et une date (de création ou de résolution suivant le flag)
Dossier | Cree | Resolu | Date |
---|---|---|---|
D1 | 1 | Null | 01/01/2017 |
D1 | Null | 1 | 01/01/2017 |
D2 | 1 | Null | 01/01/2017 |
D2 | Null | 1 | 02/01/2017 |
etc... |
Je voudrais connaitre la moyenne de dossier créé par jour de semaine.
Voici le calcul effectué : avg(aggr(sum(Cree), Cree,DateCalendrier.DateFormat.JourSemaine))
et le résultat obtenu :
Je ne comprends pas pourquoi ma moyenne est divisé par 2.
Avez-vous une idée ?
Je pensais que cela venait qu'il y avait 2 ligne par dossier, mais si j'essaye d'effectuer un calcul identique sur un autre champ qui ne possède pas de doublon, le résultat obtenu est dans ce cas divisé par 3 ???
Merci pour votre aide.
Nicolas
Salut,
Je ne comprend pas pourquoi tu utilise Cree comme dimension dans ton Aggr ?
Ton Aggr te retourne cette table temporaire :
Cree | DateCalendrier.DateFormat.JourSemaine | Sum(Cree) |
---|---|---|
1 | lun. | 739 |
Null | lun. | 0 |
... | ... | ... |
Donc, lorsque tu fait la moyenne de cette table par DateCalendrier.DateFormat.JourSemaine, tu obtiens : (739 + 0) / 2 = 369.5
Je pense qu'il te faut plutôt utiliser les dimension Date et DateCalendrier.DateFormat.JourSemaine dans ton Aggr pour qu'il te retourne la table temporaire suivante :
Date | DateCalendrier.DateFormat.JourSemaine | Sum(Cree) |
---|---|---|
02/01/2017 | lun. | 30 |
09/01/2017 | lun. | 26 |
... | ... | ... |
avg(aggr(sum(Cree), Date, DateCalendrier.DateFormat.JourSemaine))
Tu peux essayé d'ajouter un set analysis en plus pour voir si c'est plus performant:
avg(aggr(sum({$<Cree={1}>}Cree), Date, DateCalendrier.DateFormat.JourSemaine))
Bonjour
Peut être une piste
Tu aggréges tes données par jour de semaine ( Lundi , Mardi etc)
Tu as peut être dans ta base que deux semaines de données , et donc deux lundi ,deux mardis etc
sinon inclus un set analysis dans ton aggr :
avg(aggr(
Sum({$<Cree={1}>}Cree),
Cree,DateCalendrier.DateFormat.JourSemaine))
Bruno
Salut,
Je ne comprend pas pourquoi tu utilise Cree comme dimension dans ton Aggr ?
Ton Aggr te retourne cette table temporaire :
Cree | DateCalendrier.DateFormat.JourSemaine | Sum(Cree) |
---|---|---|
1 | lun. | 739 |
Null | lun. | 0 |
... | ... | ... |
Donc, lorsque tu fait la moyenne de cette table par DateCalendrier.DateFormat.JourSemaine, tu obtiens : (739 + 0) / 2 = 369.5
Je pense qu'il te faut plutôt utiliser les dimension Date et DateCalendrier.DateFormat.JourSemaine dans ton Aggr pour qu'il te retourne la table temporaire suivante :
Date | DateCalendrier.DateFormat.JourSemaine | Sum(Cree) |
---|---|---|
02/01/2017 | lun. | 30 |
09/01/2017 | lun. | 26 |
... | ... | ... |
avg(aggr(sum(Cree), Date, DateCalendrier.DateFormat.JourSemaine))
Tu peux essayé d'ajouter un set analysis en plus pour voir si c'est plus performant:
avg(aggr(sum({$<Cree={1}>}Cree), Date, DateCalendrier.DateFormat.JourSemaine))
Bonjour,
Je n'arrivais pas à visualiser exactement ce que pouvais faire l'aggr.
Maintenant c'est plus clair
Merci ça fonctionne
Bonjour,
Je souhaiterais ré-ouvrir le sujet car je voudrais rendre dynamique cette formule suivant une variable.
J'utilise une fonction pour pouvoir découper par Minute une date comme suit :
/** VARIABLE QUI DECOUPE UNE DATE PAR TRANCHE DE MINUTE **/
// ex: $2=15 par quart d'heure ou 30 par demie heure
Set vDecoupPlageMinute = MakeTime(Hour($1), (Floor(Minute($1) / $2)) * $2);
J'ai défini un format pour mes dates :
FormatDate:
Declare Field Definition
Fields
Year($1) As Annee,
Month($1) As Mois,
Day($1) As Jour,
Hour($1) As Heure,
....
$(vDecoupPlageMinute($1, 15)) As QuartHeure,
$(vDecoupPlageMinute($1, 30)) As DemiHeure;
La mesure suivante fonctionne correctement et me renvoie bien par quart d'heure la moyenne d'appel entrant :
Num(Avg(Aggr(Sum({<$(vConditionPeriodeAppel)>}Entrant), DateCalendrier, DateComplete.DateFormat.QuartHeure)),'#,##')
Je voudrais maintenant remplacer dans ma formule DateComplete.DateFormat.QuartHeure par ma fonction utilisée dans DateFormat pour découper mon champ DateComplete : $(vDecoupPlageMinute(DateComplete, X)) afin de pouvoir changer mon second paramètre et laisser libre l'utilisateur de découper sa date par X minutes.
Voici ma mesure utilisant ma fonction :
Num(Avg(Aggr(Sum({<$(vConditionPeriodeAppel)>}Entrant), DateCalendrier, $(vDecoupPlageMinute(DateComplete, 15)))),'#,##').
Pourquoi cette mesure ne peut fonctionne-t-elle pas ?
Suis-je obligé de créer autant de champ $(vDecoupPlageMinute($1, X)) dans mon FormatDate pour traiter tous mes cas ?
Merci pour votre aide
Dans un Aggr, tu as une expression et une ou plusieurs vrai dimensions (pas de dimension calculée).
Tu ne peux donc pas créer dynamiquement une de tes dimensions.
Donc oui, tu dois créer autant de champ $(vDecoupPlageMinute($1, X)) dans ton FormatDate pour traiter tous tes cas
Une fois de plus @sfatoux72 tu m'as été d'une aide précieuse. Merci !