35 Replies Latest reply: Jan 9, 2013 12:14 PM by Martin FAVIER RSS

    Calcul sur dimension

      Mes meilleurs voeux à tous et félicitation quant au fonctionnment de ce forum.

       

      Enoncé du problème:

      J'admet c'est un peu tiré par les cheveux

      Une base de données, des records pour y stocker entre autre les bugs et leur numéro de version.

       

      Je fais un graphique représentant le nombre de bug par version. Formule1

      =count ({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef)

       

      Sauf que pour une valeur spécifique de version, je dois additionner un reliquat d'une précédente gestion.

      En substance,

      si version = '2.1.*'

           alors je compte les bugs + ce reliquat

           sinon je compte les bugs de la version

       

      En faisant cette formule de calcul sur un objet texte , cela fonctionnement parfaitement :

      =count ({<typefiche={Bug, Anomalie}, versionAffect={'2.1.*'}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef)+ 100 (exemple devaleur de reliquat)

       

       

      J'ai essayé assez naivement de faire un :

           if (left(versionaffect,5)='2.1.0', formule1+100 , formule1) -> Marche pas

       

       

      Une idée ou alors une autre façon de faire ?

        • Re: Calcul sur dimension
          Richard Pressanti

          Bonjour et bonne année!

           

          Pourriez-vous poster un exemple de qvw car l'explication "Marche pas" n'est pas très explicite?

          • Re: Calcul sur dimension
            Martin FAVIER

            Bonjour,

             

            Si je comprends bien votre soucis, vous avez une dimension nommée versionaffect, et une partie de votre calcul conditionnée par la valeur de cette dimension.

             

            Dans ce cas, je pense que je ferais une formule de ce type :

            =count ({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef) + if (Wildmatch(versionaffect,'2.1.0*')>0, 100 , 0)
            

             

            Cette expression fonctionne-t'elle pour vous ?

             

            Martin Favier

              • Re: Calcul sur dimension

                Je regrette mais la formule ne donne pas le résultat souhaité. La valeur pour version = 2.1.* reste toujours a 403 sans l'addition de la valeur 100.

                  • Re: Calcul sur dimension
                    Martin FAVIER

                    Quel est le nom de votre dimension ?

                    C'est bien versionaffect ?

                     

                    Martin Favier

                    • Re: Calcul sur dimension
                      Richard Pressanti

                      Essayer de tester la valeur booléenne à part (p. ex. dans un objet texte) en sélectionnant manuellement la valeur 2.1.0 pour versionAffect;

                       

                      Au fait, dans votre première formule, la Set Analysis porte sur versionAffect alors que, par la suite, vous utillisez versionaffect: l'erreur de frappe est-elle locale au post ou existe-t-elle aussi dans l'application ?

                        • Re: Calcul sur dimension

                          L'erreur est locale au post.

                          J'ai fait un tableau dans lequel j'ai ajouté l'expression wildmatch( versionAffect, '2.1.*').

                          Pour chaque enregistrement contenant la valeur '2.1.0' (et autres caractères suivants), je récupère la valeur 1.

                           

                          J'en conclue que la valeur est evaluée correctement puisque que la fonction me retourne 1 et 0 pour celle n'entrant pas dans le critères.

                           

                          J'ai même essayé sous cette forme : (sans plus de succès)

                          = if (Wildmatch(versionAffect,'2.1.0*')=1, count ({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef)+ 100 , count ({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef))

                            • Re: Calcul sur dimension
                              Richard Pressanti

                              C'est assez difficile d'évaluer sans le qvw mais je pense que le problème vient de la Set Analysis qui est évaluée globalement pour tout le tableau et non pour chaque ligne, de sorte que les sélections opérées en son sein font sauter certains enregistrements. Typiquement votre reliquat ne doit pas matcher avec vos sélections

                              <typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>}

                               

                              2 Solutions:

                               

                              1°) Remplacer le count + SA par un sum( if( match(typefiche, ...) AND match( resolution,...) , 1) )

                               

                              2°) Faire de la SA au sein d'un aggr et sommer ensuite: sum( aggr( <expression_initiale> , type_fiche , resolution))

                                • Re: Calcul sur dimension

                                  Avec la formule ci dessous, j'arrive au meme résultat qu'avec ma formule initiale

                                   

                                  =sum(aggr(count({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef),versionAffect))

                                   

                                   

                                  Comment puis-je préciser que si versionAffect = 2.1.0* il doit y avoir +100 ?

                                    • Re: Calcul sur dimension
                                      Martin FAVIER

                                      Ok, ce n'est donc pas versionAffect qui est utilisé comme dimension de votre graphique.

                                      Ou alors vous en avez fait une dimension calculée ?

                                       

                                      Quelle est la dimension de votre histogramme ?

                                       

                                      Martin Favier

                                      • Re: Calcul sur dimension
                                        Richard Pressanti

                                        Il suffit d'intégrer le terme conditionné à l'intérieur du aggr:

                                         

                                        =sum(aggr(

                                        count(

                                             {<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef

                                             )

                                        + if( wildmatch( versionAffect, '2.1.0*) , 100)

                                         

                                        ,versionAffect

                                        ))

                                          • Re: Calcul sur dimension

                                            En reprenant la formule :

                                            La valeur pour la version 2.1.0 passe à 3203.

                                             

                                            La courbe ne présente plus les valeurs pour les autres versions.

                                              • Re: Calcul sur dimension
                                                Richard Pressanti

                                                JE me suis apercu d'une coquille dans ce que je vous ai envoyé:

                                                 

                                                Il faut taper wildmatch( versionAffect, '2.1.0*' ) i.e. fermer l'expression régulière par une quote.

                                                 

                                                Désolé. En espérant que ca marche...

                                                  • Re: Calcul sur dimension

                                                    J'avais corrigé, car la formule m'indiquait une erreur dans les parenthèses.

                                                     

                                                    Le problème reste entier hélas.

                                                    • Re: Calcul sur dimension
                                                      Richard Pressanti

                                                      J'ai déjà eu ce problème: lorsqu'on utulise aggr, il faut coupler sum avec total<les-clés> sinon QV met tout sur une des valeurs:

                                                       

                                                      Essayez de remplacer

                                                      sum( aggr(

                                                      par :

                                                      sum( TOTAL<versionAffect> aggr(

                                                        • Re: Calcul sur dimension

                                                          Rappel de la formule :

                                                          =sum(TOTAL <versionAffect> Aggr(count({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef)+

                                                          if( wildmatch( versionAffect, '2.1.0*'), 100),versionAffect))

                                                           

                                                          Résultat: J'ai toujours 3203

                                                            • Re: Calcul sur dimension
                                                              Richard Pressanti

                                                              Essayez de mettre versionAffect en dimension de votre graphique et nous allons essayer de trouver la bonne valeur. Ensuite, on remettra la dimension calculée...

                                                              • Re: Calcul sur dimension
                                                                Richard Pressanti

                                                                Autre chose, votre table Qv est-elle issue d'une source unique ou est-elle reconstituée par des JOIN avec possibilité de champs positionnés à NULL ?

                                                                • Re: Calcul sur dimension
                                                                  Martin FAVIER

                                                                  La meilleure solution serait de créer dans votre script le n° de version avec uniquement les 5 premiers caractères.

                                                                   

                                                                  Dans l'éditeur de script (Fichier / Editer le script), vous devriez avoir une instruction du type

                                                                  LOAD 
                                                                       projet,
                                                                       id,
                                                                       clef,
                                                                       ...
                                                                       versionAffect
                                                                  FROM Fichier.xls (biff...);
                                                                  

                                                                   

                                                                  Vous pouvez créer le n° de version en rajoutant ceci :

                                                                  LOAD 
                                                                       projet,
                                                                       id,
                                                                       clef,
                                                                       ...
                                                                       versionAffect,
                                                                      if (left(versionAffect,5) = '2.2.0', '2.2.1',left(versionAffect,5)) as Version
                                                                  FROM Fichier.xls (biff...);
                                                                  

                                                                   

                                                                  De cette manière, vous pourrez utiliser le champ Version comme dimension.

                                                                   

                                                                  L'expression de votre graphique devient donc

                                                                   

                                                                  count ({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef) + if (Version='2.1.0', 100 , 0)
                                                                  

                                                                   

                                                                  Martin Favier

                                                                    • Re: Calcul sur dimension

                                                                      J'ai suivi votre conseil en mettant directement dans la requete un left(versionAffect,5).

                                                                      Je tronque toutes les versions mais c'est moins important qu'il n'y parait vu que de toute façon, je le faisais dans la dimension.

                                                                       

                                                                      Merci à vous 2 pour votre perspicacité et votre aide

                                                                  • Re: Calcul sur dimension
                                                                    Richard Pressanti

                                                                    J'ai trouvé le vrai problème. C'est if( wildmatch() , 100) qui élimine les valeurs non matchantes: il faut ajouter le terme 0 donnant la valeur prise en cas d'échec du match d' où la formule:

                                                                     

                                                                    =sum(TOTAL <versionAffect>

                                                                    Aggr(count({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef)

                                                                    +

                                                                    if( wildmatch( versionAffect, '2.1.0*'), 100, 0)

                                                                    ,versionAffect))

                                                                      • Re: Calcul sur dimension

                                                                        Ok pour les valeurs qui ne s'affichaient plus. Avec cette formule, elle s'affiche.

                                                                         

                                                                        Reste toujours que la valeur pour la versionAffect = 2.1.0* vaut encore 3203

                                                                          • Re: Calcul sur dimension
                                                                            Martin FAVIER

                                                                            edcasali a écrit:

                                                                             

                                                                            Ok pour les valeurs qui ne s'affichaient plus. Avec cette formule, elle s'affiche.

                                                                             

                                                                            Reste toujours que la valeur pour la versionAffect = 2.1.0* vaut encore 3203

                                                                            Vous parlez de ma méthode ?

                                                                              • Re: Calcul sur dimension

                                                                                Oui votre formule ci dessous permet de visulaiser toutes les valeurs des autres versions.

                                                                                 

                                                                                Néanmoins, il reste que pour la valeur de versionAffect = 2.1.0* est erronée. Il devrait y avoir 503 (par rapport à la pièce jointe dans le fil de la discussion)

                                                                                 

                                                                                =sum(TOTAL <versionAffect>

                                                                                Aggr(count({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef)

                                                                                +

                                                                                if( wildmatch( versionAffect, '2.1.0*'), 100, 0)

                                                                                ,versionAffect))

                                                                                  • Re: Calcul sur dimension
                                                                                    Martin FAVIER

                                                                                    Il ne faut pas utiliser de TOTAL ou de fonction AGGR().

                                                                                     

                                                                                    Dans votre graphique, grâce au script que vous avez modifié, vous devez mettre la dimension Version (qui est le nouveau champ créé) et la formule indiquée précédemment (cf ci-dessous) en expression. Cela devrait fonctionner.

                                                                                     

                                                                                    Formule à utiliser :

                                                                                    count ({<typefiche={Bug, Anomalie}, resolution={'Fixed','Non resolu', 'A traiter dans futur projet'}>} clef) + if (Version='2.1.0', 100 , 0)

                                                                                     

                                                                                    Martin Favier

                                                                • Re: Calcul sur dimension
                                                                  Martin FAVIER

                                                                  Pourriez-vous nous envoyer une image avec votre modèle de données ?

                                                                   

                                                                  Martin Favier

                                                          • Re: Calcul sur dimension
                                                            Martin FAVIER

                                                            edcasali a écrit:

                                                             

                                                            Mes meilleurs voeux à tous et félicitation quant au fonctionnment de ce forum.

                                                             

                                                            Bonne année et meilleurs voeux à vous aussi au passage