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
Not applicable

aggrégation et count et analysis

bonjour,

j'ai besoin d'un petit coup de main sur une fonction assez évoluée.

voici mes données :

   

Code événementNom étapeNom apprenantEvénement clôturé
13172317103 - Dossier completAMIAUDNON
13173501704 - Convoc entretien PiloteAMIAUDNON
13176084905 - AdmissibleAMIAUDNON
13177872110 - Mise en relationAMIAUDNON
13172953801 - Préinscription portailBETHYSNON
13174217103 - Dossier completBETHYSNON
13174416104 - Convoc entretien PiloteBETHYSNON
13176087805 - AdmissibleBETHYSNON
13177873210 - Mise en relationBETHYSNON
13172956401 - Préinscription portailBLOTTIERENON
13173937403 - Dossier completBLOTTIERENON
13174416304 - Convoc entretien PiloteBLOTTIERENON
13176089205 - AdmissibleBLOTTIERENON
13176513801 - Préinscription portailCABANETOSNON
13172956101 - Préinscription portailDALIBERTNON
13172918001 - Préinscription portailDALKOLMONON
13173812203 - Dossier completDALKOLMONON
13174790004 - Convoc entretien PiloteDALKOLMONON
13175292105 - AdmissibleDALKOLMONON
13169732701 - Préinscription portailDREANNON
13169736403 - Dossier completDREANNON
13173501904 - Convoc entretien PiloteDREANNON

et je voudrais compter le nombre d'événement pour lesquels la colonne "Evénement clôturé" est égal à NON et pour lesquels le dernier "Nom étape" = "01 - Préinscription portail"

Donc je pense qu'il faut faire une agrégation sur le "Nom apprenant" pour regrouper les évènements par apprenant et ensuite faire un comptage si le dernier événement d'un apprenant est égal à "01 - Préinscription portail" donc un set analysis

count(aggr({$<[Nom étape]={'01 - Préinscription portail'},[Evénement clôturé]={'NON'}>},[Nom apprenant]) [Code événement])

mais ce que j'ai fait ne fonctionne pas bien sûr alors comment écrire cette ligne ?

dans mon exemple ci-dessus le résultat serait 3

merci

Tags (1)
1 Solution

Accepted Solutions
sfatoux72
Valued Contributor

Re: aggrégation et count et analysis

Relis une fois mon explication précédente.

Maintenant on va simuler sur le tableau de donnée ce que fait le set Analysis.:

  • [Nom apprenant] = {"=Num(Left(MaxString([Nom étape]), 2)) = 2"}
    • Il va filtrer les Nom apprenant qui sont à l'étape 2
    • --> Trie ton tableau par Nom étape
    • --> Sélectionne les Nom appelant qui sont à l'étape 2 en cliquant dessus ==> Il y en a qu'un , c'est VICKERS
  • [Evénement clôturé]={'NON'}
    • Il va filtrer les Evénement clôturé égale à NON
    • Sélectionne NON dans Evénement clôturé en cliquant dessus ==> Aucun changement ils sont tous à NON

Maintenant tu te retrouves avec 2 lignes, et c'est sur ces 2 lignes que ton expression va travailler.

Si ton expression est :

  • Count({$<...>} DISTINCT [Code événement])    ==> On aura 2 comme résultat, car il y a 2 Code événement distinct
  • Count({$<...>} DISTINCT [Nom apprenant])    ==> On aura 1 comme résultat, car il n'y a qu'un Nom apprenant

Encore une fois, dans le set analysis on ne filtre pas Nom étape, mais nom apprenant qui à comme étape max l'étape 2.

Il ne faut donc pas utiliser Count({$<...>} DISTINCT [Code événement]), mais Count({$<...>} DISTINCT [Nom apprenant])   

20 Replies

Re: aggrégation et count et analysis

May be this:

Count({$<[Nom apprenant] = {"=MaxString([Nom étape]) = '01 - Préinscription portail'"}, [Evénement clôturé]={'NON'}>} DISTINCT [Nom apprenant])

Employee
Employee

Re: aggrégation et count et analysis

Bonjour,

L’aggr n’est nécessaire que dans le cas d’agrégations imbriquées (ex : le max de la somme de…).

Dans votre cas, je ne vois pas où c’est nécessaire (sauf s’il manque queque chose dans votre texte d’explication). Donc, c’est plus simple :

count( {$<[Nom étape]={'01 - Préinscription portail'},[Evénement clôturé]={'NON'}>} )

Cdt

Christophe Jouve

Principal Solution Architect

De : Jacky GAUD

Envoyé : vendredi 10 mars 2017 15:58

À : Christophe Jouve <Christophe.Jouve@qlik.com>

Objet : - aggrégation et count et analysis

Re: aggrégation et count et analysis

Gives me 2... why is DALKOLMO included?

Capture.PNG

Not applicable

Re: aggrégation et count et analysis

that's right DALKOLMO isn't included

Re: aggrégation et count et analysis

Then the count is 2, right? If it is 2, then check the attached

sfatoux72
Valued Contributor

Re: aggrégation et count et analysis

Hi Sunny,

Good expression, but he wants to count "Code événement" :

=Count({$<[Nom apprenant] = {"=MaxString([Nom étape]) = '01 - Préinscription portail'"}, [Evénement clôturé]={'NON'}>} DISTINCT [Code événement])

Not applicable

Re: aggrégation et count et analysis

bonjour,

je pense que l'on est pas loin du résultat mais il y a un truc que je ne comprends pas. J'ai rajouté le comptage de l'étape "02 - Dossier incomplet"

Count({$<[Nom apprenant] = {"=MaxString([Nom étape]) = '01 - Préinscription portail'"}, [Evénement clôturé]={'NON'}>} DISTINCT [Code événement]) +

Count({$<[Nom apprenant] = {"=MaxString([Nom étape]) = '02 - Dossier incomplet'"}, [Evénement clôturé]={'NON'}>} DISTINCT [Code événement])

et ça me donne ceci

  

Code événementNom étapeNom apprenantEvénement clôturépréinscription
7
13176513801 - Préinscription portailCABANETOSNON1
13172956101 - Préinscription portailDALIBERTNON1
13173004301 - Préinscription portailFORESTENON1
13172956701 - Préinscription portailGEAYNON1
13167746301 - Préinscription portailPLOQUINNON1
13172308701 - Préinscription portailVICKERSNON1
13173075402 - Dossier incompletVICKERSNON1

ce qui n'est pas normal car je vois 2 fois Vickers alors que je veux compter que la dernière étape donc la ligne Préinscription de Vickers ne devrait pas apparaître.

Rappel je ne veux compter que la dernière étape pour laquelle il y a eu préinscription ou dossier complet.

sfatoux72
Valued Contributor

Re: aggrégation et count et analysis

C'est tout a fait normal comme résultat, car tu utilises ton expression dans un tableau dans le quel tu as mis comme dimension "Nom étape". Ca a un effet de filtre.

Si tu enlèves la dimension "Nom étape" tu n'auras plus qu'une seul ligne pour VICKERS.

Et si tu désire afficher le nom de l'étape en cours, il te suffit d'ajouter l'expression :  MaxString([Nom étape])

Note :  Tu peux facilement déplacer ton expression "Nom étape" au milieu de tes dimensions, en sélectionnant son label et en le déplaçant à la position désirée.

Not applicable

Re: aggrégation et count et analysis

effectivement cela résout le pb d'affichage mais le compte n'y est pas car au total j'ai 7 alors que ça devrait être 6

donc j'ai modifié le code en mettant

Count({$<[Nom apprenant] = {"=MaxString([Nom étape]) = '01 - Préinscription portail'"}, [Evénement clôturé]={'NON'}>} DISTINCT [Nom apprenant]) +

Count({$<[Nom apprenant] = {"=MaxString([Nom étape]) = '02 - Dossier incomplet'"}, [Evénement clôturé]={'NON'}>} DISTINCT [Nom apprenant])

et c'est mieux car maintenant j'ai 6