Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Aymeric_PAO
Contributor II
Contributor II

Compter des occurrences si un paramètre est vrai

Bonjour, 

Je débute sur Qlik et je cherche à compter les occurrences d'un champ C en fonction d'un champ B. Mon but est d'obtenir ensuite, sous forme d'un graphique en secteur le pourcentage de chaque anomalie chez les clients ou sur mon réseau.

Ainsi, si B est vide je compte seulement les anomalies liées aux cases vides, ce sont les anomalies Réseau. Sinon je compte seulement les anomalies liées aux cases remplies, ce sont les anomalies Client.

Vous trouverez, en annexe,  un exemple des données que j'utilise.

D'avance merci,

Aymeric

1 Solution

Accepted Solutions
brunobertels
Master
Master

Bonjour 

pour moi dans mon appli test cette formule fonctionne et me renvoi 3

count les NOM (BT pour toi je penses) si PCE EST Vide et Anomalie est NON vide 

count({<PCE={''},Anomalie-={''}>}Nom)

A présent si dans tes données tu peux changer le script de chargement tu peux remplacer les valeurs null ou vide par un terme (Ex1) ou un Flag (Ex2):

Ex 1 : 

[Table]:
LOAD * INLINE
[
Nom,PCE,Anomalie
Client 1,30,Poudre blanche
Client 2,31,
Client 3,32,Poudre blanche
Réseau 1,,Poudre noire
Réseau 2,,Poudre blanche
Réseau 3,,Végétation abondante
Client 452 ,12750,Poudre noire
](delimiter is ',');

final:
NoConcatenate
Load
Nom,
if(PCE='','videPCE',PCE) as PCE, // Si PCE est vide ajoute videPCE dans la cellule sinon prend la valeur de la cellule 
if(Anomalie='','videAno',Anomalie) as Anomalie // Si Ano est Vide ajoute videAno dans la cellule sinon prend la valeur de la cellule. 
resident Table;
drop table Table;

 

Ex 2 : 

[Table]:
LOAD * INLINE
[
Nom,PCE,Anomalie
Client 1,30,Poudre blanche
Client 2,31,
Client 3,32,Poudre blanche
Réseau 1,,Poudre noire
Réseau 2,,Poudre blanche
Réseau 3,,Végétation abondante
Client 452 ,12750,Poudre noire
](delimiter is ',');

final:
NoConcatenate
Load
Nom,
PCE,
Anomalie,
if(PCE='','1','0') as Flag_PCE, // Si PCE est Vide Flag = 1 
if(Anomalie='','1','0') as Flag_Anomalie // Si Ano est Vide FlagAno = 1 
resident Table;
drop table Table;

 

Et ainsi tu prends dans ton set analysis les FLAG pour compter tes valeurs : 

count({<Flag_PCE={'1'},Flag_Anomalie-={'1'}>}Nom)

View solution in original post

4 Replies
brunobertels
Master
Master

Bonjour 

sur la base des données çà donnerait 

compter les anomalies seulement si colonne PCE est Vide :

count({<PCE={''}>}Anomalie)

compter les anomalies seulement si colonne PCE est NON vide : 

count({<PCE-={''}>}Anomalie)

compter les anomalie seulement si colonne PCE est NON vide ET colonne Anomalie est NON vide : 

count({<PCE-={''},Anomalie-={''}>}Anomalie)

 

voir App en exemple :

brunobertels_0-1635501542182.png

 

Aymeric_PAO
Contributor II
Contributor II
Author

Bonjour Bruno,

Merci pour votre réponse !

J'utilise votre dernière formule pour compter les occurrences de PCE NON vide et d'anomalie NON vide mais si je veux compter PCE vide et Anomalie NON vide, je ne peux pas afficher de graphique car il contient uniquement des valeurs non définies.

count({<PCE={''},Anomalie-={""}>}BT)

Ainsi, si je comprends bien ces cases étant vides QLIK ne peut pas compter leurs occurrences.

Avez-vous s'il vous plaît une solution à mon problème ?

Bien cordialement,

Aymeric

brunobertels
Master
Master

Bonjour 

pour moi dans mon appli test cette formule fonctionne et me renvoi 3

count les NOM (BT pour toi je penses) si PCE EST Vide et Anomalie est NON vide 

count({<PCE={''},Anomalie-={''}>}Nom)

A présent si dans tes données tu peux changer le script de chargement tu peux remplacer les valeurs null ou vide par un terme (Ex1) ou un Flag (Ex2):

Ex 1 : 

[Table]:
LOAD * INLINE
[
Nom,PCE,Anomalie
Client 1,30,Poudre blanche
Client 2,31,
Client 3,32,Poudre blanche
Réseau 1,,Poudre noire
Réseau 2,,Poudre blanche
Réseau 3,,Végétation abondante
Client 452 ,12750,Poudre noire
](delimiter is ',');

final:
NoConcatenate
Load
Nom,
if(PCE='','videPCE',PCE) as PCE, // Si PCE est vide ajoute videPCE dans la cellule sinon prend la valeur de la cellule 
if(Anomalie='','videAno',Anomalie) as Anomalie // Si Ano est Vide ajoute videAno dans la cellule sinon prend la valeur de la cellule. 
resident Table;
drop table Table;

 

Ex 2 : 

[Table]:
LOAD * INLINE
[
Nom,PCE,Anomalie
Client 1,30,Poudre blanche
Client 2,31,
Client 3,32,Poudre blanche
Réseau 1,,Poudre noire
Réseau 2,,Poudre blanche
Réseau 3,,Végétation abondante
Client 452 ,12750,Poudre noire
](delimiter is ',');

final:
NoConcatenate
Load
Nom,
PCE,
Anomalie,
if(PCE='','1','0') as Flag_PCE, // Si PCE est Vide Flag = 1 
if(Anomalie='','1','0') as Flag_Anomalie // Si Ano est Vide FlagAno = 1 
resident Table;
drop table Table;

 

Et ainsi tu prends dans ton set analysis les FLAG pour compter tes valeurs : 

count({<Flag_PCE={'1'},Flag_Anomalie-={'1'}>}Nom)

Aymeric_PAO
Contributor II
Contributor II
Author

Bonjour Bruno

C'est super merci beaucoup.