7 Replies Latest reply: May 2, 2016 3:46 PM by Fk Fisher RSS

    Grouper des dimensions dès le chargement

    Fk Fisher

      Bonjour,

      Je suis utilisateur récent de qlik sense et je suis confronté à la difficulté suivante. A partir d'un fichier Excel, j'effectue le chargement suivant :

       

      [Disponibilité des ressources$]:

      LOAD

                      [Etablissement Fournisseur],

                      [Spécificité],

                      [Ressource affectée],

                      [Me 01/06],

                      [Je 02/06],

                      [Ve 03/06],

                      [Sa 04/06],

      ….

                      [Je 30/06],

      [Ve 01/07],

                      [Commentaire affectation]

      FROM [lib://01-Taux Saturation/ PlanDeCharge_Ressource_20160428_1133910.xls]

      (biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

       

       

       

      Ma difficulté réside dans le fait que j'aimerais grouper puis additionner toutes les données des dimensions d'un même mois (exemple : [ **/06] ) dans une ou des nouvelles dimensions du type [Total Mois 06] et [Total Mois 07].

       

      Est-ce que vous sauriez m'aider ?

       

      Un grand merci d'avance pour votre aide.

       

      Franck

        • Re: Grouper des dimensions dès le chargement
          Christophe Brault

          Bonjour,

           

          Il semble que ta source de donnée soit "croisée". C'est à dire que la donnée que tu souhaite analyser est en colonne et non en ligne.

           

          La dimension est la date et la valeur la quantité affectée.

           

          Dans Qlik, il y a une fonction CrossTable() qui permet de décroiser un tableau de la manière suivante dans ton cas :

           

          Crosstable(DATE,Quantité,3)

          [Disponibilité des ressources$]:

          LOAD

                          [Etablissement Fournisseur],

                          [Spécificité],

                          [Ressource affectée],

                          [Me 01/06],

                          [Je 02/06],

                          [Ve 03/06],

                          [Sa 04/06],

          ….

                          [Je 30/06],

          [Ve 01/07]

          FROM [lib://01-Taux Saturation/ PlanDeCharge_Ressource_20160428_1133910.xls]

          (biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

           

          Le résultat à la fin du script sera un champs avec les dates et un autre avec les quantités.

           

          J'ai enlever la colonne commentaire du chargement.

           

          Une fois cette opération effectuée, il est possible d'additionner les quantités de chaque jours.

           

          Est ce que je réponds au besoin ?

            • Re: Grouper des dimensions dès le chargement
              Fk Fisher

              C'est parfait

              Merci beaucoup beaucoup ;-)

              Très bonne journée.

              • Re: Grouper des dimensions dès le chargement
                Fk Fisher

                Re bonjour Christophe,


                Je me permets une question complémentaire suite à la réponse précédente !


                La réponse répond parfaitement à mes attentes mais cette solution ne me permet pas de garder la notion de date au sens de mois du calendrier.

                Dans mes graphiques, j'utilise pour d'autres calcul une petite table simple à deux colonnes avec "N° de Mois" et "Nb de jours du Mois".

                J'aurais besoin de pouvoir joindre cette petit table ou l'une de ces 2 colonnes à chacun des "Crosstable" que je vais générer mois après mois. 

                Je pensais créer une nouvelle dimension lors de mon chargement "Crosstable" du type : [N° de Mois] = right (de tous les [****/06]. ensuite Qlik Sense aurait créé une clé entre les [N° de Mois] de toutes mes sources. ...

                Malheureusement, malgré ma lecture intensive de l'aide et de nombreux essais,  je vois que mes lacunes en  SQL sont trop importantes pour être autonome dès le début :-)

                Sauriez vous m'aider ?

                Encore merci d'avance

                Franck

                  • Re: Grouper des dimensions dès le chargement
                    Christophe Brault

                    Il serait possible de créer cette table "calendrier" directement à partir de la précédente en faisant :

                    CALENDRIER:

                    LOAD DATE,

                              Month(Date(Right(DATE,5),'DD/MM')) as Mois,        

                              Num(Month(Date(Right(DATE,5),'DD/MM'))) as NoMois,

                              Day(MonthEnd(Date(Right(DATE,5),'DD/MM'))) as NbJoursDuMois


                    Resident [Disponibilité des ressources$];

                      • Re: Grouper des dimensions dès le chargement
                        Fk Fisher

                        Merci beaucoup mais....,

                         

                        Ceci semble répondre à ma question à 100% mais je viens d'essayer et je n'ai pas de valeur !

                         

                        Aurais-je fait une erreur dans la position de ce script ?

                         

                        Je ne l'ai pas mis dans MAIN, mais je l'ai répété dans chacune des sections de chargement mensuelles comme ci-dessous. Je n'ai pas de message d'erreur. Je retrouve bien les dimensions "MOIS","NbJoursduMOIS" et "NoMOIS" dans la liste des dimensions mais elles sont vides quelques soient la sélection active ou pas ????

                         

                        Crosstable(DATE,Qte_juin,22)

                        [Disponibilité des ressources$]:

                        LOAD

                        [ID Activité],

                            [Structure Responsable],

                            [Libellé Activité],

                            [Jour/

                        Nuit],

                            [N° Compte],

                            [Statut],

                            [Besoin capacité],

                            [Code ligne],

                            [Libellé ligne],

                            [Libellé voie],

                            [PK début],

                            [PK fin],

                            [Durée],

                            [Début],

                            [Fin],

                            [Commentaire],

                            [Type ressource],

                            [Statut1],

                            [Code

                        ressource] as [Code Ress],

                            [Etablissement Fournisseur],

                            [Spécificité],

                            [Ressource affectée],

                            [Me 01/06],

                            [Je 02/06],

                            [Ve 03/06],

                            [Sa 04/06],

                            [Di 05/06],

                            [Lu 06/06],

                            [Ma 07/06],

                            [Me 08/06],

                            [Je 09/06],

                            [Ve 10/06],

                            [Sa 11/06],

                            [Di 12/06],

                            [Lu 13/06],

                            [Ma 14/06],

                            [Me 15/06],

                            [Je 16/06],

                            [Ve 17/06],

                            [Sa 18/06],

                            [Di 19/06],

                            [Lu 20/06],

                            [Ma 21/06],

                            [Me 22/06],

                            [Je 23/06],

                            [Ve 24/06],

                            [Sa 25/06],

                            [Di 26/06],

                            [Lu 27/06],

                            [Ma 28/06],

                            [Me 29/06],

                            [Je 30/06]

                        FROM [lib://01-Taux Saturation/PlanDeCharge_Ressource_20160428_1133910.xls]

                        (biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

                         

                        CALENDRIER:

                         

                        LOAD DATE,

                         

                            Month(Date(right(DATE,5),'DD/MM')) as Mois,

                            Num(Month(Date(right(DATE,5),'DD/MM'))) as NoMois,

                            Day(MonthEnd(Date(right(DATE,5),'DD/MM'))) as NbJoursDuMois

                           

                        Resident [Disponibilité des ressources$];

                          • Re: Grouper des dimensions dès le chargement
                            Christophe Brault

                            Oui c'est normal le format de date n'est pas correct désolé.

                            De ce que je vois, je te propose ceci :

                             

                            A partir de plusieurs fichier mensuels formatés de la même manière (Même champs, règle de nommage du fichier), on peut utiliser '*' pour charger à la volée.

                             

                            Sans reprendre tous les champs ca donnerait :

                             

                            Crosstable(DATE,Qte_juin,23)

                            TEMP_TABLE:

                            LOAD Left(Subfield(Filebasename(),'_',3),4) as AnnéeFichier, // récupère l'année à partir du nom du fichier

                                 * // charge tous les champs

                            FROM [lib://01-Taux Saturation/PlanDeCharge_Ressource_*.xls]

                            (biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

                             

                            Noconcatenate

                            TABLE:

                            LOAD *,

                            Makedate(AnnéeFichier,right(right(DATE,5),2),left(right(DATE,5),2)) as Date

                            resident TEMP_TABLE;

                            drop table TEMP_TABLE;

                             

                            CALENDRIER:

                            LOAD Date,

                                Month(Date) as Mois,

                                Num(Month(Date)) as NoMois,

                                Day(MonthEnd(Date)) as NbJoursDuMois

                             

                            Resident TABLE;