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: 
xavier_bertret
Contributor II
Contributor II

Cumul sur histogramme avec données vides

Bonjour.

Première discussion en ce qui me concerne, j'espère ne pas faire d'erreur, merci par avance pour votre compréhension.

La situation :

Je dois réaliser un graphique en histogramme avec une valeur de CA que je dois cumuler. La première dimension correspond au mois de signature de l'affaire. Il y a également une dimension pour indiquer le nom du responsable en charge de l'affaire.

Autant pour le mois de janvier j'ai des valeurs pour les 2 responsables, autant pour le mois de février je n'ai des valeurs que pour l'un d'eux. Mat table QVD ne contient donc pas de ligne pour le mois de février pour le second responsable ( voir qvd joint ).

Il semble que Qlik ne soit pas capable d'analyser la valeur manquante et cumul pas la totalité sur le mois de février. Je me retrouve donc avec ce graphique :

QlikView - [DXAVIERCLICK_VIEWAPPLIS03_CAPCAP_2_ETAPE_2.jpg

Ma difficulté :

Comment faire en sorte que la barre du mois de février m'affiche 3150 pour Alexandre et 3000 pour Bernard ?

Merci d'avance pour votre aide car j'ai beau chercher je n'ai pas trouvé.

Pour info j'ai essayé le principe de  mastercalendar que j'ai trouvé sur la communié mais malheureusement sans succès. Le code fonction mais le résultat graphique est le même.....

Labels (1)
1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Salut,

Le problème vient du fait que QlikView n'affiches pas les données qui n'existe pas et ceci passe avant le cumul.

Si tu veux que ton graphe s'affiche correctement:

Community_1251352_2.png

Il faut décocher "Supprimer les valeurs nulles":

Community_1251352.png

Et ajouter dans ton script les lignes suivantes à la suite du chargement de ton qvd, pour y ajouter les combinaisons manquantes :

// Chargement de ton QVD

VENTE_EE_OPPORTUNITES:
LOAD CA_OPPORT_,
REF_DEVIS,
DATE_SIGNATURE_EE_OPPORT,
MOIS_SIGNATURE,
MANAGER_1_OPPORT_CREE_PAR,
SOUS_UNIVERS
FROM
[..\Downloads\VENTE_EE_OPPORTUNITES.qvd]
(
qvd);


// Ajout du champ temporaire tmp_KEY_VENTE_EE_OPPORTUNITES qui me permettra de tester l'existance
// des combinaisons des chgamps MOIS_SIGNATURE et MANAGER_1_OPPORT_CREE_PAR
Left join(VENTE_EE_OPPORTUNITES)
LOAD
MOIS_SIGNATURE, // Clé de jointure
MANAGER_1_OPPORT_CREE_PAR, // Clé de jointure
MOIS_SIGNATURE & '_' & MANAGER_1_OPPORT_CREE_PAR as tmp_KEY_VENTE_EE_OPPORTUNITES
Resident VENTE_EE_OPPORTUNITES;


// Création de la table temporaire tmp_AllManagerByMonth qui définis toutes les combinaisons
// des champs MOIS_SIGNATURE et MANAGER_1_OPPORT_CREE_PAR
tmp_AllManagerByMonth:
LOAD Distinct
MANAGER_1_OPPORT_CREE_PAR
Resident VENTE_EE_OPPORTUNITES;

Outer Join(tmp_AllManagerByMonth)
LOAD Distinct
MOIS_SIGNATURE
Resident VENTE_EE_OPPORTUNITES;


// Ajout des combinaisons des champs MOIS_SIGNATURE et MANAGER_1_OPPORT_CREE_PAR qui n'existe pas
Concatenate(VENTE_EE_OPPORTUNITES)
LOAD *
Resident tmp_AllManagerByMonth
Where not Exists(tmp_KEY_VENTE_EE_OPPORTUNITES, MOIS_SIGNATURE & '_' & MANAGER_1_OPPORT_CREE_PAR) ;


// Suppression des tables et champs temporaires
DROP Field tmp_KEY_VENTE_EE_OPPORTUNITES;
DROP Table tmp_AllManagerByMonth;

View solution in original post

3 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Salut,

Le problème vient du fait que QlikView n'affiches pas les données qui n'existe pas et ceci passe avant le cumul.

Si tu veux que ton graphe s'affiche correctement:

Community_1251352_2.png

Il faut décocher "Supprimer les valeurs nulles":

Community_1251352.png

Et ajouter dans ton script les lignes suivantes à la suite du chargement de ton qvd, pour y ajouter les combinaisons manquantes :

// Chargement de ton QVD

VENTE_EE_OPPORTUNITES:
LOAD CA_OPPORT_,
REF_DEVIS,
DATE_SIGNATURE_EE_OPPORT,
MOIS_SIGNATURE,
MANAGER_1_OPPORT_CREE_PAR,
SOUS_UNIVERS
FROM
[..\Downloads\VENTE_EE_OPPORTUNITES.qvd]
(
qvd);


// Ajout du champ temporaire tmp_KEY_VENTE_EE_OPPORTUNITES qui me permettra de tester l'existance
// des combinaisons des chgamps MOIS_SIGNATURE et MANAGER_1_OPPORT_CREE_PAR
Left join(VENTE_EE_OPPORTUNITES)
LOAD
MOIS_SIGNATURE, // Clé de jointure
MANAGER_1_OPPORT_CREE_PAR, // Clé de jointure
MOIS_SIGNATURE & '_' & MANAGER_1_OPPORT_CREE_PAR as tmp_KEY_VENTE_EE_OPPORTUNITES
Resident VENTE_EE_OPPORTUNITES;


// Création de la table temporaire tmp_AllManagerByMonth qui définis toutes les combinaisons
// des champs MOIS_SIGNATURE et MANAGER_1_OPPORT_CREE_PAR
tmp_AllManagerByMonth:
LOAD Distinct
MANAGER_1_OPPORT_CREE_PAR
Resident VENTE_EE_OPPORTUNITES;

Outer Join(tmp_AllManagerByMonth)
LOAD Distinct
MOIS_SIGNATURE
Resident VENTE_EE_OPPORTUNITES;


// Ajout des combinaisons des champs MOIS_SIGNATURE et MANAGER_1_OPPORT_CREE_PAR qui n'existe pas
Concatenate(VENTE_EE_OPPORTUNITES)
LOAD *
Resident tmp_AllManagerByMonth
Where not Exists(tmp_KEY_VENTE_EE_OPPORTUNITES, MOIS_SIGNATURE & '_' & MANAGER_1_OPPORT_CREE_PAR) ;


// Suppression des tables et champs temporaires
DROP Field tmp_KEY_VENTE_EE_OPPORTUNITES;
DROP Table tmp_AllManagerByMonth;

xavier_bertret
Contributor II
Contributor II
Author

Un grand merci pour ta réponse très complète et qui semble correspondre à mon attente. Je vais tester cela très rapidement. Encore merci.

xavier_bertret
Contributor II
Contributor II
Author

Après test réalisé ce jour en conditions réelles, cela fonctionne.

Encore une fois un grand merci.