11 Replies Latest reply: Jul 25, 2017 8:37 AM by Kevin Chevrier RSS

    Problème d'interprétation des données

    Julien Roblès

      Bonjour,

       

      J'importe d'un fichier QVD une liste de machine mais Qlikview interprète mal et rajoute un 0 à gauche

      Données (code machine)     Interprétation QV

      0100                                   0100

      0200                                   0200

      0300                                   0300

      0402                                   0402

      402                                     0402 (il rajoute un 0)

      0500                                   0500

       

      J'ai essayé une fonction Text() sans succès.

      Avez-vous une solution à mon problème ?

      Merci d'avance

        • Re: Problème d'interprétation des données
          Julien Roblès

          La fonction LEN renvoie 4 pour les deux !!!

          La fonction TEXT renvoie 0402 pour les deux.

          Je pense que le problème vient de la constitution du QVD

          • Re: Problème d'interprétation des données
            LAURENT CLOATRE

            Julien,

             

            Si tu ne l'as pas déjà, je t'encourage à utiliser Q-Eye, un outil très pratique pour consulter des QVD/QVX pour visualiser tes QVD.

            • Re: Problème d'interprétation des données
              Julien Roblès

              Je viens de regarder avec l'outil Q-Eye, le problème est bien au niveau du QVD.

               

              Mais je ne vois pas ce qui cloche dans mon code :

              SET vRefTablesChamps = $(vParamFolder)REF_EXTRACT_CO.xlsx;

              SET vCodeSite = CO;

               

              Tables_A_Extraire:

              LOAD TABLE,

                   EXPORT,

                   CONDITION

              FROM

              [$(vRefTablesChamps)]

              (ooxml, embedded labels, table is TABLES);

               

              $(Include=$(vParamFolder)connect_comera.txt);

               

              FOR i = 0 to (NoOfRows('Tables_A_Extraire')-1)

               

                  LET vTable = peek('TABLE', $(i), 'Tables_A_Extraire');

                  LET vExport = peek('EXPORT', $(i), 'Tables_A_Extraire');

                  LET vCondition = peek('CONDITION', $(i), 'Tables_A_Extraire');   

               

               

                  IF ('$(vExport)'='1' or '$(vExport)'='O' or '$(vExport)'='o') THEN

                  //Si la table est à exporter

                          TRACE Export de la table $(vTable);

               

                          TRACE Export complet de la table $(vTable);

                              //Préparation de la clause SELECT

                          Champs_A_Extraire:

                          LOAD distinct concat(CHAMP, ', ') as CHAMPS

                          FROM

                          [$(vRefTablesChamps)]

                          (ooxml, embedded labels, table is CHAMPS)

                          WHERE TABLE = '$(vTable)';

                         

                          LET vClauseSelect = peek('CHAMPS', -1, 'Champs_A_Extraire');

                          IF ('$(vClauseSelect)'='') THEN

                              SET vClauseSelect=*;

                          ENDIF;

                          DROP TABLE Champs_A_Extraire;

                     

                          //Préparation de la clause WHERE

                         

                          IF (not (isnull('$(vCondition)') or trim('$(vCondition)')='')) THEN

                          //Si la condition est renseignée

                              LET vClauseFrom = 'WHERE '&'$(vCondition)';

                          ELSE

                              LET vClauseFrom = '';

                          ENDIF;

                         

                         

                          $(vTable):

                          SQL SELECT $(vClauseSelect)

                          FROM $(vTable)

                          $(vClauseFrom);

                         

                          STORE $(vTable) into [$(vQVDFolder)$(vTable)_$(vCodeSite).QVD] (qvd);

                         

                          DROP TABLE $(vTable);

                                 

                  ENDIF;

              NEXT i;

               

              DROP TABLE Tables_A_Extraire;

                • Re: Problème d'interprétation des données
                  Kevin Chevrier

                  à quoi correspond données machine dans ton script ?

                   

                  Si tu mets cela : If(len(Données)>3, Données, num(Données)) as DONNEES_TRANSFORMEES


                  en remplacant Données par le nom du champ où tu as ce que tu appelles les "Données(machine)", alors ça devrait fonctionner.


                  Kevin

                    • Re: Problème d'interprétation des données
                      Kevin Chevrier

                      Si je comprends bien ton script ça doit être à cet endroit :

                       

                      $(vTable):

                                  SQL SELECT $(vClauseSelect),

                                     If(len(Données)>3, Données, num(Données)) as DONNEES_TRANSFORMEES

                                  FROM $(vTable)

                                  $(vClauseFrom);

                       

                      Si c'est pas bon, essaie avec lenght :

                      If(lenght(Données)>3, Données, num(Données)) as DONNEES_TRANSFORMEES


                      Ensuite tu regardes dans ton QVD à quoi ressemble DONNEES_TRANSFORMEES

                  • Re: Problème d'interprétation des données
                    Julien Roblès

                    Mon souci c'est que ce script me sert à générer tous mes QVD (pas que la table des machines)

                      • Re: Problème d'interprétation des données
                        Kevin Chevrier

                        Dans ce cas, comme tu as une particularité.

                         

                        Je ne sais pas si cela marche mais l'idée serait d'utiliser une clause where et charger en 2 temps.

                         

                        Dans un premier temps :

                        $(vTable):

                                    SQL SELECT $(vClauseSelect)

                                    FROM $(vTable)

                                    $(vClauseFrom)

                                    WHERE  $(vClauseFrom) <> 'Machines';

                         

                        Dans un second temps ;

                        Machines:

                                    SQL SELECT $(vClauseSelect),

                                       If(lenght(Données)>3, Données, num(Données)) as DONNEES_TRANSFORMEES

                                    FROM $(vTable)

                                    $(vClauseFrom)

                                    WHERE  $(vClauseFrom) = 'Machines';

                         

                        Si cela ne marche pas alors il faudrait créer une variable $(vClauseFrom) sans la table Machines. Puis charger Machines à part comme expliqué ci-dessus.


                        Kevin