4 Replies Latest reply: Mar 18, 2016 12:28 PM by Djotohou Stella RSS

    Qlikview: gestion de flux de données

    Djotohou Stella

      Bonjour,

       

      Je me permet de venir vers vous car j'ai un casse tête que mon responsable vient de me pauser sur les fonctions de qlikview.

      Je vais vous l'expliquer:

       

      On vient de mettre en place un entrepôt de données (modelé en étoile). Dans cette base nous avons toutes les données de différente plateforme(les plateformes sont les bases de données des clients).

      Qliview lui se connecte à la base pour charger les données et assure leur analyse pour chaque plateforme choisir (réalisation de dashboard pour chaque plateforme)

      nous avons un exemple de dashboard standard que nous venons de créer. Mon problème est le suivant:

      -comment peut on faire pour que qlikview génère de lui même via le dashboard standard les informations sur une plateforme donnée de l'entrepôt.(

      c-a-d pour une plateforme DELTA, qlikview génère le dashboard sans qu'on ne fasse les paramètres)

      c'est comment mettre en place ce mécanisme que je ne sais pas, d'ou ma venu ici pour avoir des solutions.

       

      Merci de m'aider à trouver cette solution.

        • Re: Qlikview: gestion de flux de données
          Christophe Brault

          Bonjour,

           

          Si j'ai bien compris, vous voulez générer l'application standard pour certaines données de votre entrepôt et non l'intégralité.

           

          En reprenant votre exemple sur la source DELTA, vous avez sans doute cette notion dans une des table du modèle en étoile.

           

          A partir de là, il faut filtrer les tables lors du chargement en utilisant la fonction where et where exists().

           

          Votre table contenant DELTA doit être chargée en première par exemple :

          TABLE1:

          LOAD ID,

                    SOURCE

          FROM TABLE.QVD where SOURCE = 'DELTA';

           

          ensuite les table suivant seront filtrées par les champs clés :

          TABLE2:

          LOAD ID,

                    CHAMPS1,

                    CHAMPS2

          FROM TABLE2.QVD where exists(ID);

           

          Ainsi, les tables se filtreront les une par rapport aux autres.

           

          N'hésitez pas à partager plus d'info (Modèle, tables, etc) pour avoir des réponses plus précises.

           

          Cordialement

            • Re: Qlikview: gestion de flux de données
              Djotohou Stella

              Par exemple j'ai une table instance(contient les noms de toutes les plateformes)

              dim_Instance:

               

              ID

              Nomplateforme

              pays

              1

              delta

              fr

              2

              omega

              usa

               

              cette table est relié à 2 table de faits : faitpresentation, faitreponse

               

              pour charger ma première table je fais comme suis:

               

              INSTANCE:

              LOAD `DIN_ID`,

                  `Nomplateforme`AS NAME_DATA_BASE,

                  `pays` AS COUNTRY;

              SQL SELECT *

              FROM DIM_INSTANCE I,FACT_PRESENTATION FP

              where I.DIN_ID=FP.DIN_ID

              and FP.DIN_ID=1;

              Concatenate(INSTANCE)

              LOAD `DIN_ID`,

                  `Nomplateforme`AS NAME_DATA_BASE,

                  `pays` AS COUNTRY;

              SQL SELECT *

              FROM DIM_INSTANCE I,FACT_PRESENTATION FP

              where I.DIN_ID=FP.DIN_ID

              and FP.DIN_ID=1 ;

              STORE INSTANCE INTO qvd_prod_test\INSTANCE.qvd (qvd);

              ----------------

              ANSWER:

              LOAD `FAN_ID`,

                  `FAN_ANSWERS` AS ANSWER,

                 `FAN_TYPE_ANSWER` as ANSWER_TYPE,

                  `DSU_ID`,

                  `DAQ_ID`,

                  `DTM_ID`,

                  `DIN_ID`;

              SQL SELECT *

              FROM `BI-REFERENTIELLE`.`FACT_ANSWERS` FA

              where FA.DIN_ID=1;

              STORE ANSWER INTO qvd_before_prod_test\ANSWER.qvd (qvd);

               

              ------------------

              PRESENTATION:

              LOAD `FFA_ID`,

                  `DPE_ID`,

                  `DPR_ID`,

                  `DTM_ID`,

                  `DBR_ID`,

                  `DFL_ID`,

                  `DOS_ID`,

                  `DIN_ID`,

                  `FFA_DURATION` AS DURATION,

                  `FFA_PARTICIPANT_PRESENT`AS NUMBER_PARTICIPANT;

              SQL SELECT *

              FROM FACT_PRESENTATION P

              where P.DIN_ID=1;

              STORE PRESENTATION INTO qvd_before_prod_test\PRESENTATION.qvd (qvd);

               

              mais en montrant a mon responsable, il dit qu'il ne veut pas à chaque fois pour une plate forme a charger venir modifier dans le script qlikview l'id de la plateforme pour lequel on veut réaliser le dashboard. Il veut un paramètre qui vas jouer ce role sans même qu'on est a modifié le script et par contre je ne sais pas comment je vais donc faire cela car pour moi sans le modifié dans le script je ne sais pas comment je vais faire dire a qlikview de me charger les données d'une instance

                • Re: Qlikview: gestion de flux de données
                  Christophe Brault

                  Dans ce cas, il suffit de stocker l'id de la plateforme dans un fichier texte par exemple, et de le charger dans une variable qui sera utilisé dans le script pour faire les comparaisons

                    • Re: Qlikview: gestion de flux de données
                      Djotohou Stella

                      J'ai pris compte de votre remarque et j'ai crée un fichier txt qui contient la liste (id, nombase et pays)

                      puis j'ai fait je recharge le fichier dans qlikview puis je pas à la lecture pour recupérer l'id

                       

                      LISTE_INSTANCE:

                       

                      LOAD DIN_ID,

                           DIN_BASE,

                           DIN_COUNTRY

                      From

                      [$(vListe_instance)]

                      (biff, embedded labels, table is Sheet1$);

                       

                      Let vNumberOfRows = NoOfRows('LISTE_INSTANCE');

                       

                      For vI = 0 to vNumberOfRows - 1

                       

                      Let vInstance_ID =Peek(DIN_ID,vI,'DIN_BASE');

                      Let [$(vInstance_ID)]=Peek(DIN_ID,vI,DIN_ID);

                      NEXT

                       

                      ma préocupation est de savoir si avec la syntaxe de ma bouble je recupère bien mon id

                       

                      que je vais remplacer dans les autres tables lors de leur chargement

                       

                      ANSWER:

                      LOAD `FAN_ID`,

                          `FAN_ANSWERS` AS ANSWER,

                         `FAN_TYPE_ANSWER` as ANSWER_TYPE,

                          `DSU_ID`,

                          `DAQ_ID`,

                          `DTM_ID`,

                          `DIN_ID`;

                      SQL SELECT *

                      FROM FACT_ANSWERS FA, DIM_INSTANCE I

                      where I.DIN_ID=FA.DIN_ID

                      and I.DIN_ID=$(vInstance_ID);

                      STORE ANSWER INTO qvd_before_prod_test\ANSWER.qvd (qvd)

                       

                      merci d'avance