12 Replies Latest reply: Jul 16, 2014 2:26 AM by DUHEM Thomas RSS

    Afficher les dimensions même si la mesure a une valeur vide.

      Bonjour,

       

      Nouveau sur l'environnement Qlikview, je me confronte à un problème. Dans ma table je dispose d'une date d'enregistrement que j'ai transformé en mois via la fonction Month()pour récupérer le mois. Je dispose également d'un mode de réclamation.

       

      Je souhaite faire apparaitre dans un tableau (graphique) le nombre de réclamation par mois même si je ne dispose pas d'enregistrement pour un mois donné sur un site (que j'ai dans une liste de sélection).

       

      J'ai donc créer un tableau croisé dynamique avec 2 dimensions : une avec le mode de réclamation et l'autre avec les mois (que j'ai transposé en horizontale pour un confort de lecture). J'ai coché l'option "Affiché toute les valeurs" pour mes deux dimensions et décohé supprimer les valeurs null dans l'onglet présentation.

      Pour mon expression j'ai réalisé un comptage avec la fonction Count(). J’obtiens le résultat voulu à part qu'il me créer des valeurs sous forme de tiré dans mes dimensions (voir capture d'écran)

      Tabelau.png

      Comment empêcher cela ?

       

      J'espère avoir été le plus claire possible n'hésitez pas si des précision sont nécessaire

       

      Merci pour votre aide

        • Re: Afficher les dimensions même si la mesure a une valeur vide.

          Bonjour Thomas,

           

          Lorsqu'une donnée est manquante ou null, elle est représentée par un '-'. (Cf. Clik droit sur ton tableau -> Propriétés -> Présentation).

           

          Si c'est "normal" que tu n'es pas de données pour tel mois, tu peux très bien choisir de remplacer le '-' par le symbole, lettre, ou chiffre de ton choix. Par exemple 0.

           

          Attention :

          Ca modifiera l'ensemble des valeurs - par 0. Dans le cas, ou tu cible une seule colonne, tu peux utiliser un IF().

           

          Exemple :

          If(Count([Nombre de réclamations])>0,[Nombre de réclamations],0 )

           

          Cordialement,

            • Re: Afficher les dimensions même si la mesure a une valeur vide.

              Bonjour Aritas,

               

              Merci pour votre réponse. Par contre je vois que je ne me suis pas bien exprimer. En effet le soucis est l’apparition de tirés les dimensions "mode de réclamations" et "mois".

              Pour les autres tiré j'avais constater que je pouvais le modifier via les propriétés mais je préfère laisser un tiré

               

              Ma table est la suivante :

               

              Numéro de fiche (sur lequel je réalise le count() car chaque fiche a un numéro unique)

              Date d'enregistrement que je travail pour transformé en mois ( correspond à la date de création de la fiche s'est un critère automatique qui est forcement renseigné)

              Mode de réclamation (il est forcément renseigné car sinon on ne peut pas valider d’ailleurs par défaut s'est le mode tél qui est pris)

              Service concerné (s'est la seul variable qui n'est pas forcément présente sur tout les mois)

               

              ex

               

              table.png

                          

              Ce qui se passe s'est que je n'aurai jamais de champs vide pour le "mode réclamation" ni pour la date car elle existe toujours hors en procédant comme je le fait pour avoir tout le temps mes mois même quand il n'y a pas de réclamations pour un service j'ai les tirés qui apparaissent dans mes dimensions "mois" et "mode de réclamation"

               

              A oui j'ai oublier de préciser je réalise un count avec un set analysis pour forcer l'affichage des mois :

               

              count ({< Mois> } [Fiche de suivi n°])

               

              S'est peut être de la que vient mon problème ?

                • Re: Afficher les dimensions même si la mesure a une valeur vide.

                  Salut Thomas,

                   

                  Si tu peux jointre ton Qlikview que j'y jette un œil, je pourrai peut-être t'aider.

                   

                  Cordialement,

                    • Re: Re: Afficher les dimensions même si la mesure a une valeur vide.

                      Bonjour AritasVH,

                       

                      Voici le fichier

                       

                      Merci pour ton aide

                        • Re: Re: Re: Afficher les dimensions même si la mesure a une valeur vide.
                          Bruno Souza

                          Bonjour, Thomas.

                           

                          Si vous créer les combinaisons manquantes, vous avons une solution pour votre problème.

                           

                          Voir dans le script du fichier ci-joint.

                           

                          Cordialement,


                          Bruno.

                            • Re: Afficher les dimensions même si la mesure a une valeur vide.

                              Bonjour Bruno,

                               

                              Merci pour ton aide cela semble répondre à ma question. Par contre est il possible que tu m'explique un peux le script STP, car comme je débute je nage un peux la.

                                • Re: Re: Afficher les dimensions même si la mesure a une valeur vide.
                                  Bruno Souza

                                  Bonjour, Thomas.

                                   

                                  Voici une explication:

                                   

                                  //Création de la table de donnés sources avec la clé
                                  Réclamation:
                                  Load
                                    Month([Ouverture Date]) &'_'& [Mode de réclamation] &'_'& Site as Clé,
                                    [Fiche de suivi n°],
                                    [Ouverture Date],
                                    Month([Ouverture Date]) as Mois,
                                    [Mode de réclamation],
                                    Site
                                  From [G:\QlikView\Thomas\Source\FSR.txt]
                                  (txt, codepage is 1252, embedded labels, delimiter is ';', msq, header is 7 lines);
                                  
                                  MoisSiteMode: // création d'une table pour créer les données manquantes
                                  /* Distinct est un prédicat utilisé pour charger uniquement
                                  le premier enregistrement en cas de doublons. */
                                  Load Distinct // Charger chaque Mois sole une fois.
                                    Mois
                                  Resident Réclamation;
                                  
                                  /* Le préfixe join joint la table chargée à une table nommée existante ou à la dernière
                                  table de données créée. La jointure est une Jointure naturelle effectuée sur tous les
                                  Champs communs. Le préfixe join peut être précédé d'un des préfixes Inner, Outer, Left ou Right.  */
                                  /* Le préfixe explicite Join peut être précédé du préfixe outer pour spécifier une jointure externe.
                                  Dans une jointure externe, toutes les combinaisons entre les deux tables sont générées.
                                  De ce fait, la table résultante contient uniquement des combinaisons de valeurs de champs
                                  provenant des tables de données brutes où les valeurs des champs de liaison sont représentées
                                  dans une ou les deux tables. Le mot-clé outer est facultatif. */
                                  Outer Join (MoisSiteMode) Load Distinct // Charger chaque Site sole une fois.
                                      Site // Comme il n'y a pas champs égaux,
                                  Resident Réclamation; // nous avons toutes les combinaisons de Mois et Site.
                                  
                                  Outer Join (MoisSiteMode) Load Distinct // Toutes les combinaisons de Mois, Site et Mode
                                      [Mode de réclamation]
                                  Resident Réclamation;
                                  
                                  /*Concatenate: Si deux tables à concaténer disposent d'ensembles de Champs différents,
                                  il est tout de même possible de forcer la Concaténation à l'aide du préfixe Concatenate.
                                  Cette instruction force la concaténation avec une table existante et nommée ou avec la
                                  dernière Table logique créée. En principe, une concaténation équivaut à une instruction SQL UNION,
                                  à deux différences près : tout d'abord, le préfixe Concatenate s'utilise,
                                  que les tables contiennent des noms de champs identiques ou non et, deuxièmement,
                                  aucune suppression d'enregistrements identiques n'est effectuée.*/
                                  Concatenate (Réclamation) Load
                                      Mois,
                                      [Mode de réclamation],
                                      Site
                                  Resident MoisSiteMode
                                  Where not Exists(Clé, Mois &'_'& [Mode de réclamation] &'_'& Site); // Ne charger pas les combinaisons existantes
                                  /* Exists(champ [ , expression ] ): Détermine si une valeur de champ donnée existe dans un champ
                                  parmi les données déjà chargées. Field est un nom ou une expression de chaîne qui donne un nom de champ.
                                  Le champ doit exister dans les données chargées jusque-là par le script.
                                  Expr est une expression qui fournit la valeur à chercher dans le champ spécifié.
                                  Si elle est omise, c'est la valeur de l'enregistrement actif dans le champ spécifié qui est utilisée. */
                                  
                                  Drop Table MoisSiteMode; // suppression de la table pour la création des données manquantes
                                  Drop Field Clef; // suppression de la Clé créée
                                  
                                  
                                  
                                  
                                  
                                  
                                  

                                   

                                  Cordialement

                              • Re: Re: Re: Afficher les dimensions même si la mesure a une valeur vide.

                                J'ai coché l'option "Affiché toute les valeurs" pour mes deux dimensions et décohé supprimer les valeurs null dans l'onglet présentation.

                                Salut Thomas,

                                 

                                Pour la Dimension : Mode de réclamation, si tu coche 'Supprimé si la valeur est null', tu n'as plus de '-' dans le tableau. C'était tout bête enfaite

                                 

                                Cordialement,

                        • Re: Afficher les dimensions même si la mesure a une valeur vide.
                          Mambi Badi

                          as tu deja essayé  l'expression : Count ([Fiche de suivi n°]) + count( {1} 0 )

                          en sachant que pour ta dimension souhaitée la case 'Afficher toutes les valeurs' est bien cochée  et que dans l'onglet présentation la case 'Supprimer les valeurs nulles' est bien décochée.

                            • Re: Re: Afficher les dimensions même si la mesure a une valeur vide.

                              Bonjour Mambi Badi,

                               

                              Cela ne résous pas mon problème de départ qui est d'afficher des valeurs dans le tableau au niveau des dimensions. Par contre le Script de Bruno est parfait mais je ne l'ai pas compris dans son intégralité donc si il y a une âmes pour m'expliquer cela je suis preneur

                               

                              // Création table intermédiaire à partir des données sources

                              Réclamation2 : // nom donnée à la table

                              LOAD

                                  [Fiche de suivi n°],

                                   [Ouverture Date],

                                   month ([Ouverture Date]) as Mois,

                                   [Mode de réclamation],

                                   Site

                                  

                                 

                              FROM

                              [G:\QlikView\Thomas\Source\FSR.txt]

                              (txt, codepage is 1252, embedded labels, delimiter is ';', msq, header is 7 lines);

                               

                              // création de la table de travail

                              Réclamation:

                              LOAD

                                  Mois &'_'& [Mode de réclamation] &'_'& Site as Clef,

                                  [Fiche de suivi n°],

                                  [Mode de réclamation],

                                  Mois,

                                  Site

                              Resident Réclamation2;

                              Drop Table Réclamation2; // suppression de la table des données sources

                               

                              MoisSiteMode: // création d'une table pour créer les données manquantes

                              Load Distinct // Qui peut m'éclairer sur le Distinct

                              Mois

                              Resident Réclamation;

                               

                              Outer Join (MoisSiteMode) Load Distinct // Qui peut m'éclairer sur le Outer join

                                  Site

                              Resident Réclamation;

                               

                              Outer Join (MoisSiteMode) Load Distinct

                                  [Mode de réclamation]

                              Resident Réclamation;

                               

                              Concatenate (Réclamation) Load // Qui peut m'éclairer sur concatenate

                                  Mois,

                                  [Mode de réclamation],

                                  Site

                              Resident MoisSiteMode

                              Where not Exists(Clef, Mois &'_'& [Mode de réclamation] &'_'& Site); // qui peut m'éclairer sur cette instruction

                               

                              Drop Table MoisSiteMode; // suppression de la table pour la création des données manquantes

                              Drop Field Clef; // suppression de la "CLEF" créée

                               

                              J'ai juste adapter le code pour moi