8 Replies Latest reply: Oct 30, 2014 4:42 AM by Guillaume Marchand RSS

    Créer une table avec de nouvelles variables pour sélection pertinente

      Bonjour,

       

      Je suis assez nouveau sur QlikView et je suis confronté au problème suivant :

      Dans mon fichier source (ci-joint), j'ai 3 variables : ID_Restitution_, Indicateurs et periode. Je crée en plus une variable Date pour avoir le format YYYY/MM/DD.

      L'idée est de représenter les données en fonction de certaines formules (somme des indicateurs en fonction de certains ID_Restitution_) en fonction de la date.

       

      J'ai 3 formules par exemple dont le code est le suivant :

      //Formule1 :

      SET formule1=Sum({$<ID_Restitution_={"KP_01_001*","KP_01_002*"}>}[Indicateurs]);

       

      //Formule2 :

      SET formule2=Sum({$<ID_Restitution_={"KP_01_003*","KP_01_004*","KP_01_005*"}>}[Indicateurs]);

       

      //Formule3 :

      SET formule3=Sum({$<ID_Restitution_={"KP_01_006*","KP_01_007*","KP_01_008*","KP_01_009*","KP_01_010*"}>}[Indicateurs]);

       

      J'arrive à bien les représenter dans un graphique en prenant la dimension Date puis dans les Expressions, mettre les références aux 3 formules ci-dessus.

      Cependant avec cette méthode, je n'arrive pas à avoir une sélection sur les formules : n'afficher que la formule1, que la formule1 et 3 etc.

       

      Ma question est : comment fabriquer une sélection par type de formule? Ou plus précisément comment créer une nouvelle table qui contiendrait le variable Date (qui sert de clé), une variable libellé_formule (contenant formule1, formule2, etc.) et une variable volumétrie (qui correspondrait à la somme des indicateurs comme ci-dessus)?

       

      Guillaume

        • Re: Créer une table avec de nouvelles variables pour sélection pertinente

          Si je peux rajouter une peu plus de détail pour vous montrer où j'en suis dans mon script :

           

          Donnees :

          LOAD ID_Restitution_,

               Indicateurs,

               periode,

               Date(Date#(periode,'YYYYMMDD')) as Date

          FROM

          [C:\Exemple.xls]

          (biff, embedded labels);

           

           

          Donnees_suite :

          LOAD Date,

            'Formule1' as Libellé_formule,

            Sum(Indicateurs) as volumetrie

          Resident Donnees

          Group By Date;

           

           

          L'idée est de créer dans la table Donnees_suite un libellé par type de formule avec une certaine somme qui correspond aux Set Analysis mis dans mon premier message ci-dessus.

          • Re: Créer une table avec de nouvelles variables pour sélection pertinente
            David B.

            Bonjour Guillaume,

             

            Je te conseille de travailler avec des dimensions représentant des axes d'analyse et non pas des indicateurs.

            Tu devrais définir dans ton script des dimensions telles que :

            Wildmatch('ID_Restitution_','KP_01_001*','KP_01_002*') as[Dim 1]

            ...

             

            Dans ton graph, il suffit de mettre en dimension [Dim 1] et en expression l'indicateur que tu souhaites :

            sum([Indicateur])

             

            La fonction wildmatch compare ['ID_Restitution_'] à la chaîne saisie entre quote (' ') + *. Si ok, elle renvoie 1, 2,... selon le nombre de chaines comparées.

            Si tu dois faire des set analysis sur tes dimensions par la suite, tu peux selectionner uniquement les valeurs comparées et recherchées

            Par exemple sum({<[Dim 1]>}={'1']) [indicateur] pour l'analyse des KP_01_001*

             

            C'est la seule façon que j'ai trouvé de mon côté pour faire ce genre de manip.

             

            L'idéal serait d'avoir dans le script quelque chose du genre :

            if('ID_Restitution_' CONTIENT 'KP_01_001', ALORS = DIMENSION)


            J’espère t'aider avec ça

            • Re: Créer une table avec de nouvelles variables pour sélection pertinente

              Bonjour David,

               

              Je te remercie pour ta réponse. Je vais voir ce que je peux faire avec tes indications. Je vais regarder plus de détails sur la fonction Wildmatch. Ainsi que sur les IF.

               

               

              Guillaume

                • Re: Re: Créer une table avec de nouvelles variables pour sélection pertinente

                  Finalement, je n'arrive pas à faire fonctionner correctement la fonction Wildmatch. Ou du moins, je ne vois pas comment m'en servir correctement pour arriver à mes fins.

                   

                  Je n'ai peut-être pas été assez précis dans mon problème. Je joins donc le fichier source (Exemple.xls) et un fichier source suite (Exemple_suite.xls) obtenu à la main.

                  Je joins aussi le rapport QlikView (Exemple.qvw) pour visualiser ce que je souhaite : regarder le graphique à atteindre qui change en fonction des formules sélectionnées.

                   

                  En fait, ce que je souhaite faire sous QlikView c'est de créer une table qui correspond au fichier Exemple_suite.xls en partant du fichier source. Afin de faire un graphique qui dépend des sélections de formules.

                  Est-ce que c'est possible?

                  Est-ce nécessaire? Si non, quelle méthode employer?

                   

                  Merci

                   

                  J'espère avoir été plus clair avec mes exemples.

                  Pour information, je n'ai que la version gratuite de QlikView. La licence se fait attendre... Mais je ne peux plus ouvrir de rapport QVW actuellement.

                   

                  Guillaume

                    • Re: Re: Créer une table avec de nouvelles variables pour sélection pertinente

                      J'aurai une idée d'algorithme, mais je ne sais pas si c'est faisable sous QlikView :

                       

                      Etape 1 :

                      Si ID_Restitution_ contient 'KP_01_001*' ou 'KP_01_002' alors formule1

                      Sinon Si ID_Restitution_ contient 'KP_01_003*' ou 'KP_01_004' ou 'KP_01_005' alors formule2

                               Sinon formule3

                           AS [Type formule]

                       

                      Etape 2 :

                      Ensuite je crée une nouvelle table où je fais la somme des indicateurs GROUP BY Date, [Type formule]

                       

                       

                      Le problème c'est que je ne sais pas faire l'étape 1 :

                      Je dois avoir un soucis avec WildMatch() ne serait-ce que pour tester la première partie des IF :

                      IF(WildMatch('ID_Restitution_','KP_01_001*','KP_01_002*')<>0,'Formule1','Formule2') as [Type formule]

                       

                      J'ai toujours Formule2 dans mon résultat...

                        • Re: Re: Créer une table avec de nouvelles variables pour sélection pertinente

                          Ça y est je tiens ce que je souhaitais. Encore merci David ton post m'a bien servi.

                           

                          Pour faire l'étape 1 :

                          //Lecture du fichier source

                          Donnees_sources :

                          LOAD ID_Restitution_,

                               Indicateurs,

                               periode,

                               Date(Date#(periode,'YYYYMMDD')) as Date,

                               IF(WildMatch(ID_Restitution_,'KP_01_001*','KP_01_002*')<>0,'Formule1',

                                IF(WildMatch(ID_Restitution_,'KP_01_003*','KP_01_004*','KP_01_005*')<>0,'Formule2','Formule3')) as [Type formule],

                               IF(WildMatch(ID_Restitution_,'KP_01_008*')<>0,-Indicateurs,Indicateurs) as Indic_new

                          FROM

                          [K:\gmarchand\Tests\09_Dataviz\in\Exemple.xls]

                          (biff, embedded labels);

                           

                          Pour faire l'étape 2 :

                          Donnees_suite2 :

                          LOAD Date,

                            [Type formule],

                            Sum(Indicateurs) as Somme_bis

                          Resident Donnees_sources

                          Group By Date, [Type formule];

                           

                          Conclusion :

                          Ainsi je peux faire une sélection sur [Type formule].

                          Dans mon graphique j'ai en dimension la variable Date ainsi que [Type formule].

                          Et en expression Sum(Indicateurs).

                           

                          Remarque :

                          L'étape 2 n'est pas nécessaire.

                          L'étape 1 non plus si on ne souhaite pas faire les sélections. Il suffit de faire comme David a dit.

                          Dans le graphe prendre en dimension, la Date une une dimension calculée qui a la forme suivante :

                          IF(WildMatch(ID_Restitution_,'KP_01_001*','KP_01_002*')<>0,'Formule1',

                                IF(WildMatch(ID_Restitution_,'KP_01_003*','KP_01_004*','KP_01_005*')<>0,'Formule2','Formule3'))

                          Puis en expression Sum(Indicateurs).