Qlik Community

Groupe des Utilisateurs Francophones

Vous êtes francophone? Ce groupe est pour vous. Venez découvrir comment démarrer avec Qlik Sense et QlikView, poser vos questions et partager vos tutos et astuces avec les membres de notre communauté.

Highlighted
nicolassopraste
Not applicable

[Qlik Sense] - Avg d'un Sum : AVG(AGGR(SUM)))

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)

DossierCreeResoluDate

D1

1Null01/01/2017
D1Null101/01/2017
D21Null01/01/2017
D2Null102/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 :

avg(aggr(sum))).png

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

Tags (1)
1 Solution

Accepted Solutions
sfatoux72
Not applicable

Re: [Qlik Sense] - Avg d'un Sum : AVG(AGGR(SUM)))

Salut,

Je ne comprend pas pourquoi tu utilise Cree comme dimension dans ton Aggr ?

Ton Aggr te retourne cette table temporaire :

CreeDateCalendrier.DateFormat.JourSemaineSum(Cree)
1lun.739
Nulllun.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 :

DateDateCalendrier.DateFormat.JourSemaineSum(Cree)
02/01/2017lun.30
09/01/2017lun.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))

5 Replies
brunobertels
Not applicable

Re: [Qlik Sense] - Avg d'un Sum : AVG(AGGR(SUM)))

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

sfatoux72
Not applicable

Re: [Qlik Sense] - Avg d'un Sum : AVG(AGGR(SUM)))

Salut,

Je ne comprend pas pourquoi tu utilise Cree comme dimension dans ton Aggr ?

Ton Aggr te retourne cette table temporaire :

CreeDateCalendrier.DateFormat.JourSemaineSum(Cree)
1lun.739
Nulllun.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 :

DateDateCalendrier.DateFormat.JourSemaineSum(Cree)
02/01/2017lun.30
09/01/2017lun.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))

nicolassopraste
Not applicable

Re: [Qlik Sense] - Avg d'un Sum : AVG(AGGR(SUM)))

Bonjour,

Je n'arrivais pas à visualiser exactement ce que pouvais faire l'aggr.

Maintenant c'est plus clair

Merci ça fonctionne

nicolassopraste
Not applicable

Re: [Qlik Sense] - Avg d'un Sum : AVG(AGGR(SUM)))

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

sfatoux72
Not applicable

Re: [Qlik Sense] - Avg d'un Sum : AVG(AGGR(SUM)))

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