Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
delphinewalter
Contributor III
Contributor III

Chargement partiel des données

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

1 Solution

Accepted Solutions
christophebrault
Specialist
Specialist

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.

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin

View solution in original post

16 Replies
christophebrault
Specialist
Specialist

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.

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
delphinewalter
Contributor III
Contributor III
Author

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

sfatoux72
Partner - Specialist
Partner - Specialist

‌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

delphinewalter
Contributor III
Contributor III
Author

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;

sfatoux72
Partner - Specialist
Partner - Specialist

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

delphinewalter
Contributor III
Contributor III
Author

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

christophebrault
Specialist
Specialist

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.

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
delphinewalter
Contributor III
Contributor III
Author

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

christophebrault
Specialist
Specialist

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

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin