6 Replies Latest reply: Oct 17, 2014 10:15 AM by Guillaume Marchand RSS

    Création, manipulation de variables

      Bonjour,

       

      Je suis nouveau sur QlikView et après avoir arpenté de nombreuses FAQ ou Tutoriels, je ne trouve pas vraiment de solution à mes questions. Et dans l'attente d'une future formation QlikView...

       

      En pièce-jointe il y a un exemple de fichier avec des données à manipuler.

       

      Ce fichier contient 3 variables : ID_Restitution_, Indicateurs, periode (format YYYYMMDD)

       

      L'idée est de créer de nouvelles variables qui sont une somme des indicateurs en fonction de l'ID_Restitution_ et de la periode. Puis au final restituer cette information dans un graphique.

       

      1) Comment créer une variable, par exemple vDirect, qui sera égale à la somme des indicateurs pour les ID_Restitution commençant par "KP_01_001 et KP_01_002"  en fonction de la variable periode?

       

      2) Comment créer une variable qui s'appellera vSemaine, qui contiendra le numéro de la semaine en fonction de la variable periode?

       

      3) Comment créer une variable periode_bis qui sera au format DD/MM/YYYY par rapport à la variable periode?

       

      4) Comment stocker ces nouvelles variables dans la table source? Ou dans une autre table?

       

      Je sais qu'il y a pas mal de questions, mais je vous remercie par avance de votre retour.

        • Re: Création, manipulation de variables

          Bonjour,

           

          Il y a en effet beaucoup de questions mais qui n'en renvoie qu'à une seule : Le principe du décisionnel.

          Dans un premier temps, il est nécessaire d'être familiarisé avec les concepts de dimensions et tables de faits.
          Il n'y a aucune variable à mettre en oeuvre puisque les 4 demandes citées sont de type "Comment représenter un indictateur en fonction d'une dimension".

          Du coup, Qlikview et autre outil BI le gère automatiquement.

           

          Ceci étant dit, la réponse à la première question est de passer par une dimension calculée au sein d'un graphique.

          Pour toutes les autres questions, il faut simplement créer une table de dimension Temps qui sera raccordé à la table de fait.


          Pour résumé, il faut raccorder le champ période à une table de temps que l'on trouve partout sur le site. Ensuite, il suffit de faire des graphes en spécifiant comme dimension la première colonne du fichier et comme indicateur la seconde.

           

          Cordialement,

          Benjamin

          • Re: Création, manipulation de variables
            David B.

            Bonsoir,

             

            Pour essayer de vous aider :

             

            Point 1. Essayer de manipuler la fonction wildmatch () dans votre script. Cela vous permettra de catégoriser via des dimensions les indicateur de votre fichier. Par exemple, wilmatch(ID_Restitution,'*001','*002') as [...] Les agrégats se feront en auto en fonction de la dimension période.

            Sinon, un droite(ID_Restitution;gauche(ID_Restitution;10);2) dans excel vous permet d'ajouter une dimension supplémentaire à votre fichier source.

             

            Point 2. Convertissez directement le format de la colonne Période en format date type AMJ.

            Dans le script, Year(Période), Month(Période), Week(Période) seront vos amies.

            Là encore vous pouvez accommoder votre fichier source

             

            Point 3 et 4. Résolu par le format corrigé dans Excel

             

            Cordialement,

              • Re: Création, manipulation de variables

                Bonjour David,

                 

                Merci, mais je n'arrive pas à faire fonctionner la fonction WildMatch correctement.

                 

                Dans un premier temps je suis parti sur les indications de Benjamin, qui me permettent à l'affichage d'obtenir ce que je souhaite dans un graphique.

                 

                a) Au moment du LOAD des données, j'ai créé une nouvelle variable Date avec le script suivant :

                LOAD ID_Restitution_,

                          Indicateurs,

                          periode,

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

                FROM ...;

                 

                b) Ensuite j'ai créé une table de temps avec le script suivant (trouvé sur le blog http://www.qlikdiscovery.fr/) :

                LET vMinDate= Num(peek('Date',0,'Donnees_sources'));

                LET vMaxDate= Num(peek('Date',-1,'Donnees_sources'));

                 

                 

                ChampDate:

                LOAD

                date ($(vMinDate)+IterNo()-1) as  MaDate

                AUTOGENERATE (1)

                WHILE $(vMinDate)+ IterNo()-1<= $(vMaxDate);

                 

                 

                Calendrier:

                LOAD

                  MaDate as Date,

                  Year(MaDate) as Année,

                  'T ' & Num(Ceil( Month(MaDate)/3), '(ROM)0') as Trimestre,

                  Month(MaDate) as Mois,

                  MonthEnd(MaDate) as DateFinMois,

                  Week(MaDate) as Semaine,

                  WeekDay(MaDate) as JourSemaine,

                  Day(MaDate) as Jour

                RESIDENT ChampDate;

                 

                 

                DROP TABLE ChampDate;

                SET vMinDate = ;

                SET vMaxDate = ;

                 

                Le lien est fait automatiquement avec les variables Date dans les deux tables.

                 

                c) Dans la création de mon graphique, dans l'onglet Expressions, j'ai mis comme définition :

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

                 

                 

                Ça fonctionne correctement, je peux jouer avec la dimension temps en abscisse : Date, Semaine etc.

                 

                Dernier problème :

                1) Je ne sais pas s'il y a plus simple que de faire ce que j'ai fait dans le point c)

                2) Comme au final les rapports doivent être à destination de personnes du métier (donc a priori pas de code), est-il possible de stocker la formule du point c) dans une variable que je nommerai par exemple rech_aboutie qui leur permettrait de créer un graphique en allant chercher la variable rech_aboutie pour l'expression plutôt que tout retaper?

                Ce qui au passage veut dire stocker la formule quelque part, pour si changements il y a, les faire qu'une fois.

                 

                Si oui, comment faire?

                Dans le script, j'ai essayé avec un

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

                 

                Mais ça ne fonctionne pas, quand je fais référence à rech_aboutie dans le graphique.

                 

                Cordialement,

                 

                Guillaume