16 Replies Latest reply: Jun 12, 2018 5:33 AM by Delphine Walter RSS

    Chargement partiel des données

    Delphine Walter

      Bonjour,

       

      j'ai vu une question similaire ici : Chargement partiel et store ancienne datas mais cela ne répond que partiellement à mon problème.

      Nous travaillons avec un ERP en ligne, je m'y connecte dans qlikview grâce à un connecteur. Or le temps de chargement des données est extrêmement long (30-45min) bien que je ne charge pas tant de données que cela (et de fait, si je copie toutes mes données dans un fichier excel et que je charge depuis l'excel, le temps de chargement est de 2-3 minutes). Pour raccourcir le délai de chargement, je me dis que toutes les données passées (de J-1 au début) n'ont pas besoin d'être rechargées. y a-t-il un moyen pour que "le logiciel reconnaisse" lors du chargement que la dernière fois qu'il a téléchargé c'était il y a 3 jours par exemple et donc qu'il n'a besoin de rajouter que les 3 derniers jours en question ?

       

      Merci,

       

      Delphine

        • Re: Chargement partiel des données
          Christophe Brault

          Bonjour Delphine,

           

          Une bonne pratique dans Qlik est de mettre en place du "multi couche" au niveau de tes applications. C'est à dire d'avoir plusieurs qvw qui remplisse chacun un rôle spécifique.

           

          L'enchainement de base étant :

           

          Extraction : load et store de tes données sources (ERP dans ton cas) dans des QVD

          Modélisation : Création du modèle en étoile dans des QVD à partir des QVD déjà extrait

          Restitution : Application contenant le design

           

          Dans ton cas, c'est la phase d'extraction qui prend du temps. Donc en ciblant les tables les plus longues, tu pourras mettre en place un chargement incrémental et donc partiel des données de ton ERP.

           

          Ma réponse est très synthétique et fais appelle à de nombreuses notions je sais ... Mais c'est je pense la piste à suivre dans ton cas.

            • Re: Chargement partiel des données
              Delphine Walter

              Bonsoir Christophe,

               

              Merci pour ta réponse. J'ai déjà utilisé Qlikview avec Sage dans le passé, et c'était beaucoup plus simple qu'avec l'ERP en ligne

              Extraction : load et store de tes données sources (ERP dans ton cas) dans des QVD

              J'ai déjà vu l'histoire du stockage dans des QVD, mais je n'arrive pas à le faire, à chaque fois j'ai un message d'erreur ou syntaxe incorrecte, ou fichier introuvable, ou je ne sais plus très bien quoi. De fait c'est quelque chose dont je vais avoir besoin car je suis sur PC et mon équipe sur Mac (pas de Qlikview, il faut passer par QlikSense Cloud qui demande des QVD).

              -> cette extraction se fait-elle dans un fichier qlikview différent de celui dont je me servirai pour mes tableaux d'analyses ?

              Modélisation : Création du modèle en étoile dans des QVD à partir des QVD déjà extrait

              -> je ne comprends pas cette étape : je crée un nouveau QVD à partir des données sources stockées, mais je n'utilise toujours pas les données pour analyse ?

              Restitution : Application contenant le design

              -> le design, ce sont les analyses que je ferai une fois toutes les données bien rassemblées ?

              en ciblant les tables les plus longues, tu pourras mettre en place un chargement incrémental et donc partiel des données de ton ERP

              -> comment met-on en place un chargement incrémental ?

               

              Merci beaucoup !

               

              Delphine

                • Re: Chargement partiel des données
                  Sébastien Fatoux

                  Le chargement incrémental va très certainement résoudre ton problème de performance, mais afin de définir la bonne façon de l’implémenter

                   

                  il faut savoir si les données sources sont uniquement ajoutées, ajoutées et modifiées, ou ajoutées supprimées et supprimées

                   

                  voici un lien (en anglai) qui explique les différents cas et comment les implémenter

                   

                  QlikView Tutorials | QlikView Scripting | Incremental Loads in Qlikview - YouTube

                    • Re: Chargement partiel des données
                      Delphine Walter

                      Bonjour Sébastien,

                       

                      merci pour la vidéo, hyper clair.

                      J'ai un léger problème cependant : quand on charge les données sources, on a un WHERE qui permet justement le chargement incrémental. J'ai constaté que je ne peux pas faire de WHERE quand je me connecte à l'ERP en ligne.

                      Voici un bout du script :

                      CUSTOM CONNECT TO
                      "Provider=QvEOConnector.exe;ExactOnlineUrl=https://start.exactonline.fr;...;";
                      Table_TIERS:
                      LOAD Accounts_Code as TIERS_code,
                           Accounts_CountryName as TIERS_pays,
                           Accounts_Name as TIERS_nom;
                      SQL SELECT Accounts_Code,
                                 Accounts_CountryName,
                                 Accounts_Name
                         FROM Accounts;
                      
                      
                      

                      si je rajoute un WHERE, j'ai un message d'erreur :"QVX_SYNTAX_ERROR Invalid query" Y a-t-il un moyen de contourner ça ?

                       

                      Merci,

                       

                      Delphine

                      CUSTOM CONNECT TO "Provider=QvEOConnector.exe;ExactOnlineUrl=https://start.exactonline.fr;

                        • Re: Chargement partiel des données
                          Sébastien Fatoux

                          peux-tu me montrer le code avec le WHERE, pour voir comment tu l’as écrit

                            • Re: Chargement partiel des données
                              Delphine Walter

                              Bonjour Sébastien,

                               

                              ça donne :

                              1. CUSTOM CONNECT TO 
                              2. "Provider=QvEOConnector.exe;ExactOnlineUrl=https://start.exactonline.fr;...;"
                              3. Table_TIERS: 
                              4. LOAD Accounts_Code as TIERS_code, 
                              5.      Accounts_CountryName as TIERS_pays, 
                              6.      Accounts_Name as TIERS_nom; 
                              7. SQL SELECT Accounts_Code, 
                              8.            Accounts_CountryName, 
                              9.            Accounts_Name 
                              10.    FROM Accounts
                              11.    WHERE Accounts_Code <> '901010';


                              j'ai essayé avec != et # sans succès, et même simplement avec = pour voir si ça prenait, mais non.


                              Delphine

                                • Re: Chargement partiel des données
                                  Sébastien Fatoux

                                  essaye avec :

                                   

                                  WHERE Accounts_Code ne '901010';

                                   

                                  SI cela fonctionn, je t’expliquerai pourquoi j’ai pensé à ça

                                    • Re: Chargement partiel des données
                                      Delphine Walter

                                      Bonjour Sébastien,

                                       

                                      non, cela ne fonctionne pas :

                                      QVX_SYNTAX_ERROR: Invalid query: SELECT Accounts_Code,

                                                      Accounts_CountryName,

                                                      Accounts_Name,

                                                      Accounts_Classification, Accounts_Classification1, Accounts_Classification2, Accounts_Classification3, Accounts_Classification4, Accounts_Classification5, Accounts_Classification6, Accounts_Classification7, Accounts_Classification8

                                               FROM Accounts

                                               WHERE Accounts_Code ne '901010'

                                      SQL SELECT Accounts_Code,

                                                      Accounts_CountryName,

                                                      Accounts_Name,

                                                      Accounts_Classification, Accounts_Classification1, Accounts_Classification2, Accounts_Classification3, Accounts_Classification4, Accounts_Classification5, Accounts_Classification6, Accounts_Classification7, Accounts_Classification8

                                               FROM Accounts

                                               WHERE Accounts_Code ne '901010'

                                       

                                      Je précise que j'ai bien mis un ; après '901010' même s'il n'est pas présent dans le message d'erreur.

                                        • Re: Chargement partiel des données
                                          Sébastien Fatoux

                                          Le connecteur que vous utilisez n’a pas l’air de supporter des filtres. D’après ce que j’ai pu trouve, il a été développé par « 1 Bit Solutions », mais leur site n’est plus disponible.

                                          Essaye de voir si tu n’a pas de documentation relative à ce connecteur afin de savoir s’il supporte ou pas les filtres et si oui, comment les écrire.

                                           

                                          Sinon, il semblerait que ton ERP soit accessible en ODATA, et Qlik fourni un connecteur ODATA (https://help.qlik.com/en-US/connectors/Subsystems/Web_Connectors_help/Content/Data-Source-Connectors/OData-Connector.htm)  Cela peut être une autre piste.

                                            • Re: Chargement partiel des données
                                              Delphine Walter

                                              Bonjour Sébastien,

                                               

                                              oui le connecteur vient de 1Bit Solution, c'est sur leur site que je l'ai téléchargé. Il n'est pas compatible avec la dernière version de Qlikview, je suis avec la version 11. 

                                              effectivement, le support technique de Qlik m'avait parlé de ODATA lorsque je les avais interrogés au sujet de la compatibilité avec Mac (mon équipe est sur Mac, moi sur PC), mais je reconnais que je ne comprends pas comment cela fonctionne : je ne suis pas franchement informaticienne, à la base je suis en marketing opérationnel, le seul langage que j'ai jamais appris c'est le pascal, mais au moins ça donne une structure, et le reste c'est au fur et à mesure de mes besoins , j'ai commencé le SQL avec Business Object. Bref, tout ça pour dire que si tu avais des explications sur ODATA aussi claires que pour le chargement incrémental, je suis preneuse !

                                               

                                              Delphine

                                              • Re: Chargement partiel des données
                                                Delphine Walter

                                                Bonsoir Sébastien,

                                                 

                                                j'ai re-regardé cette histoire d'ODATA : le connecteur n'est pas disponible dans la version gratuite, et comme pour l'instant je teste le logiciel ici, je n'ai pas de version premium qui me permette d'essayer et voir si cela fonctionnerait. Cela dit, je ne comprends toujours pas comment on paramètre le truc !

                                                 

                                                 

                                                Delphine

                                  • Re: Chargement partiel des données
                                    Christophe Brault

                                     

                                     

                                     

                                    Delphine Walter a écrit:

                                     

                                    Bonsoir Christophe,

                                     

                                    Merci pour ta réponse. J'ai déjà utilisé Qlikview avec Sage dans le passé, et c'était beaucoup plus simple qu'avec l'ERP en ligne

                                    Extraction : load et store de tes données sources (ERP dans ton cas) dans des QVD

                                    J'ai déjà vu l'histoire du stockage dans des QVD, mais je n'arrive pas à le faire, à chaque fois j'ai un message d'erreur ou syntaxe incorrecte, ou fichier introuvable, ou je ne sais plus très bien quoi. De fait c'est quelque chose dont je vais avoir besoin car je suis sur PC et mon équipe sur Mac (pas de Qlikview, il faut passer par QlikSense Cloud qui demande des QVD).

                                    -> cette extraction se fait-elle dans un fichier qlikview différent de celui dont je me servirai pour mes tableaux d'analyses ?

                                     

                                    Oui c'est une application à part entière mais qui ne contient que du script. Quelle erreur as tu pour générer les QVD ?

                                    La syntaxe de base étant :

                                     

                                    STORE NomTable into CheminSurTonDisque\NomTable.Qvd(qvd);

                                     

                                    Modélisation : Création du modèle en étoile dans des QVD à partir des QVD déjà extrait

                                    -> je ne comprends pas cette étape : je crée un nouveau QVD à partir des données sources stockées, mais je n'utilise toujours pas les données pour analyse ?

                                     

                                    Tout à fait !

                                    Restitution : Application contenant le design

                                    -> le design, ce sont les analyses que je ferai une fois toutes les données bien rassemblées ?

                                     

                                    Oui

                                    en ciblant les tables les plus longues, tu pourras mettre en place un chargement incrémental et donc partiel des données de ton ERP

                                     

                                     

                                    Pour le chargement incrémental, tu as besoin d'un champ clé (un id ou une date). Je n'en vois pas dans ta requête.

                                      • Re: Chargement partiel des données
                                        Delphine Walter

                                        Bonsoir Christophe,

                                         

                                        alors pour les qvd j'ai trouvé : il ne faut pas justement que je précise le chemin d'accès, mais directement nom.qvd (qvd). Le message était que le fichier était introuvable.

                                         

                                        j'ai un champ clé - dans mon exemple, le code client, qui est doublé d'un champs ID à 16 caractères dans la table source, ainsi que les champs date (création, dernière modification, etc.), donc je devrais pouvoir le faire (je n'ai pas encore testé, j'en suis à faire des qvd propres, ce n'est pas gagné, j'ai d'autres problèmes de formats de données censées être identiques qui ne le sont pas et du coup la fonction join ne fonctionne pas).

                                         

                                        Autre question pour la structure en étoile dont tu parles :

                                        - je charge une 1ère fois mes données brutes dans des qvd (là j'ai fait un qvd par table source)

                                        - je crée des nouveaux qvd pour réarranger les données sources à ma façon : quand j'en suis là, est-ce que je dois d'abord à la main recharger les données sources (en incrémental donc) dans le 1er fichier qlikview ou bien y a-t-il une façon de le faire automatiquement dans le 2e fichier qlikview via une instruction dans le script ?

                                         

                                        Merci !

                                         

                                        Delphine

                                          • Re: Chargement partiel des données
                                            Christophe Brault

                                            Bonjour,

                                             

                                            Si tes données sources changent et que tu les veux à jour, oui il faut recharger manuellement la première application, puis celle de la modélisation.

                                             

                                            Pour recharger en ligne de commande tu peux utiliser un fichier .bat comme cet exemple (non testé)

                                             

                                            "C:\Program Files\QlikView\Qv.exe"  C:\Users\TonUser\Documents\Extraction.qvw


                                            "C:\Program Files\QlikView\Qv.exe"  C:\Users\TonUser\Documents\Modelisation.qvw

                                    • Re: Chargement partiel des données
                                      Delphine Walter

                                      bonjour Christophe et Sébastien,

                                       

                                      j'ai oublié de vous dire que le chargement incrémental fonctionnait (j'ai pu reprendre la semaine dernière seulement).

                                      En fait, il faut que je charge une première fois toute la table de l'ERP (sans condition, sans rien) que je stocke en qvd, et après je retravaille et fais la modélisation comme indiqué. Pour mon code client qui prenait mal, il fallait que je rajoute num# devant le champ (load num#(Account_code) as Account_code).

                                       

                                      je regarde le connecteur ODATA et API maintenant.

                                       

                                      merci encore !

                                       

                                      Delphine