IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

QlikView Discussion :

Problème de création QVD


Sujet :

QlikView

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 13
    Points
    13
    Par défaut Problème de création QVD
    Bonjour,

    Actuellement j'essaie simplement de créer mon fichier QVD,
    Mais j'ai l'impression que mon Qlikview ne prends pas ma commande !

    mon bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Tbl1:
    Load id, osef, omg, wtf
    From classeur1.xls
    /*ici pas de problème c'est après que cela ne marche pas...*/
     
    Test_qvd:
    SQL SELECT id, osef, omg, wtf
    From Tbl1;
    Store Test_qvd INTO qvd/Test_qvd.qvd;
    Cela me met une erreur : Invalid Object name'Tbl1'.

    Cordialement,
    Giloux.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 132
    Points : 182
    Points
    182
    Par défaut
    Bonjour,

    A tiens te voila arrivé aux qvd

    Voila le bout de code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Tbl1:
    LOAD id, osef, omg, wtf
    FROM classeur1.xls
    /*ici pas de problème c'est après que cela ne marche pas...*/
    store Tbl1 into tonFichierQvd.qvd (qvd);
    Utilise tu l'aide (F1) en français ? Si oui je te conseil de la passer en English via => Paramètres => Préférence utilisateur ( Ctrl + Alt + U ) => Dans l'onglet général => Changer la langue de l'interface => sur la partie de droite tu choisis English => Ok => Appliquer.

    Voila ce que te donne l'aide Anglaise sur le mot clé "store" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Store mytable into xyz.qvd (qvd);
    Store * from mytable into xyz.qvd;
    Store Name, RegNo from mytable into xyz.qvd;
    Store Name as a, RegNo as b from mytable into xyz.qvd;
    store mytable into myfile.txt (txt); 
    store * from mytable into myfile.txt (txt);

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    En effet le code ci-dessus fonctionne bien, du coup j'ai changé mon aide en Anglais .

    Maintenant si je suis parti sur les QVD, c'est pour pouvoir Insert, Upload et Delete dans mes tables, chose que je n'arrive pas à faire pour l'instant.

    Voici mon code (Très proche de l'aide ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    TLB2:
     
    LOAD id,
    osef,
    omg,
    wtf
    FROM
    [D:\Documents and Settings\denisa\Desktop\Classeur1.xls]
    (biff, embedded labels, table is Feuil1$)
    WHERE ModificationTime >= #$(LastExecTime)#;
    /*L'erreur est ici au niveau du ModificationTime, au départ je pensais que cétait un Champs simple alors j'avais crée un ModificationTime dans ma table avec un " now(2) as ModificationTime" mais sans succes ... */
    Concatenate LOAD id, osef, omg, wtf
    FROM File.QVD;
     
    STORE TLB2 INTO TestQvd.QVD;
    Je ne vois pas du coup ...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 132
    Points : 182
    Points
    182
    Par défaut
    Giloux,

    Tu peux réaliser des inserts via autogenerate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    TABLE1:
    load * Inline [
    	champ1, champ2, champ3
    	1, test, toto
    	2, test2, tata
    	3, test3, titi
    	];
    load '4' as champ1,
    	 'test4' as champ2,
    	 'tutu' as champ3
    	 AutoGenerate(1);
    Les Qvds sont le plus souvent utilisés comme ODS (Operational data store), c'est à dire tu mets en place des applications qui génère des qvd comme tu le souhaite et ensuite tu a ton application finale qui va venir les utiliser.
    Cela permet de déconnecter ton application finale de fichiers exogènes mais aussi des connexions à des bases de données.

    Sinon pour réaliser des updades c'est lors du chargement des tes fichiers avec des if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    load if(champ1='test','1','0') as test
              from ...
    Et pour les deletes soit tu supprime lors du chargement soit tu fais une retouche dans ton application qui va créer les qvds, ou alors tu passe par des tables temporaires.

    Exemple de manipulation de qvd, dans cette exemple je reçois un fichier tous les mois que je souhaite garder sur une profondeur de 15 mois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    if not isNull(QvdCreateTime('TonFichierQvd.qvd')) then
    	Table_1:
    	load C_ID,
    	       TAUX,
    	       DATE
    	 FROM TonFichierQvd.qvd.qvd(qvd)
    		 where DATE>=Date(AddMonths(MakeDate(Year(today()),Month(today()),1),-15),'YYYY-MM-DD')
    		 ;
    	Concatenate
    	LOAD C_ID, 
    	     TAUX ,
    	     Date(makeDate(left(DATE,4),Right(DATE,2),15),'YYYY-MM-DD') as DATE	
                 FROM TonFichierExcel.xls;
    else
    	Table_1:
    	LOAD C_ID, 
    	     TAUX ,
    	     Date(makeDate(left(DATE,4),Right(DATE,2),15),'YYYY-MM-DD') as DATE	
                FROM TonFichierExcel.xls
    end if
     
    STORE Table_1 INTO TonFichierQvd.qvd;
    Laurent.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Au final j'arrive à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    //Import test
    TLB1:
    LOAD id, 
         osef, 
         omg
    FROM
    [D:\Documents and Settings\denisa\Desktop\Classeur1.xls]
    (biff, embedded labels, table is Feuil1$);
     
    Store TLB1 INTO TestQvd.qvd (qvd);
     
    IF NOT isNull(QvdCreateTime('TestQvd.qvd')) then
    	TLB1:
    	LOAD id,
    	       osef, 
         		omg
    	 FROM TestQvd.qvd(qvd)
    				 ;
    	Concatenate
    	LOAD id, 
    	     osef ,
    	     omg
                 FROM [D:\Documents and Settings\denisa\Desktop\Classeur2.xls]
    (biff, embedded labels, table is Feuil1$)
    WHERE NOT Exists(id);
     
    else
    	TLB1:
    	LOAD id, 
    	     osef ,
    	     omg
                FROM [D:\Documents and Settings\denisa\Desktop\Classeur2.xls]
    (biff, embedded labels, table is Feuil1$)
    WHERE NOT Exists(id);
     
     
     
     
     
    End If
     
    Store TLB1 INTO TestQvd.qvd (qvd);
    J'ai essayé de faire un Insert, Update and Delete:

    Comme dans l'exemple de l'aide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Let ThisExecTime = Now( ); 
     
     
     
    QV_Table:
     
    SQL SELECT PrimaryKey, X, Y FROM DB_TABLE
     
    WHERE ModificationTime >= #$(LastExecTime)#
     
    AND ModificationTime < #$(ThisExecTime)#;
     
     
     
    Concatenate LOAD PrimaryKey, X, Y FROM File.QVD
     
    WHERE NOT EXISTS(PrimaryKey);
     
     
     
    Inner Join SQL SELECT PrimaryKey FROM DB_TABLE;
     
     
     
    If ScriptErrorCount = 0 then 
     
    STORE QV_Table INTO File.QVD;
     
    Let LastExecTime = ThisExecTime; 
     
    End If
    Peux-tu me mettre sur la voie ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 132
    Points : 182
    Points
    182
    Par défaut
    Giloux,

    Je vois pas trop ce que tu demande

    Dans QlikView ces commandes n'existes pas ( Insert, update, delete).

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    En faite c'est dans l'aide de Qlikview quand tu tapes "QVD" ensuite tu choisis "Using QVD files for incremental load" et que tu vas sur le dernier cas "Case 4: Insert, Update and Delete" la tu as ce que j'essai de faire mais que je n'arrive pas !

    Cordialement,
    Giloux

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 132
    Points : 182
    Points
    182
    Par défaut
    Oki je vois, tu veux réaliser cela aussi à partir de deux source ?

    Un Qvd et une Database ?

    Sinon tu a bien une clé unique et si possible un champ "Date" ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Oui je veux faire cela à partir de deux sources, Un Qvd et un xls (Je pense que cela ne change rien avec la db "ou j'espère").

    J'ai une clé unique "IdProjet" mais pas de champs "date" (A quoi sert t'il ? Pour différencier l'ancienne donnée et celle qui va la remplacé ?).

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 132
    Points : 182
    Points
    182
    Par défaut
    Yep pour le champ Date,

    Peux'tu m'expliquer ce que tu souhaite réaliser avec c'est deux sources (tu charge quoi de quel source et a quel moment ... où tu réalise le insert, update et delete)?

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    J'ai donc deux sources: ma QVD (qui a été initialement approvisionné par un .xls "ExportProjet.xls)
    et mon .xls qui est de la même structure que mon Qvd (Les mêmes champs que mon "ExportProjet.xls").

    • Or l'objectif premier est d'importer les données de mon "ExportProjetMaj.xls" dans mon Qvd. (Jusqu'à la j'y arrive ou peut dire que c'est la phase "Insert")

    • Ensuite mon deuxième objectif est que lors de l'import de données, Qlikview vérifie si la clé primaire ("IdProjet") n'existe pas déjà, et si c'est le cas supprimer l'ancienne et remplacé par la nouvelle.(Ce qui correspond au Update and Delete ).


    J'espère avoir été clair, sinon pas de soucis je peux encore plus détaillé.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 132
    Points : 182
    Points
    182
    Par défaut
    peux-tu donner un exemple avec des données :

    La table avant les modifications.
    Ton fichier excel
    Ton fichier de donné QlikView (qvd)
    La table apres modifications avec les deux fichiers ( construit la table à la main à partir des exemples de fichier excel et qvd ).

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Mmmm Alors:

    Mon Qvd j'ai une table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TBL1:
    	IdProjet, NomProjet, Statut, Type
    	1, test, inn, High
    	2, test2, out, DownJon
    	3, test3, inn, Down
    Ma table xls:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TBLmaj:
    	IdProjet, NomProjet, Statut, Type
    	1, test, out, High
    	4, test4, inn, HowHigh
    Après la modification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TBL1:
    	IdProjet, NomProjet, Statut, Type
    	1, test, out, High
    	2, test2, out, DownJon
    	3, test3, inn, Down
            4, test4, inn, HowHigh
    Dans l'idée c'est cela !

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 132
    Points : 182
    Points
    182
    Par défaut
    Merci pour le mal de tête

    Je crois avoir trouvé, pour faire suite à ton exemple créé un fichier excel Lmaj
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	IdProjet, NomProjet, Statut, Type
    	1, test, out, High
    	4, test4, inn, HowHigh
    Ensuite dans QlikView copie/colle en changeant le chemin de ton fichier excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    TBL1:
    load * Inline [ IdProjet, NomProjet, Statut, Type
    	1, test, inn, High
    	2, test2, out, DownJon
    	3, test3, inn, Down 
    	];
    STORE TBL1 into test.qvd (qvd);	
    DROP table TBL1;
     
    T_1:
    LOAD IdProjet, 
         NomProjet, 
         Statut, 
         Type
         FROM C:\TEMP\Lmaj.xls (biff, embedded labels, table is Sheet1$);
    outer join load 
         IdProjet,
         NomProjet, 
         Statut, 
         Type
         from test.qvd(qvd)
    where not Exists(IdProjet);
    Recharge et regade ta table et "normalement" c'est OK
    Il te reste alors à changer ton load * inline par le chargement de ton fichier excel (projet) et de ne pas oublier de le sauvegarder en qvd.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Cela marche très bien merci beaucoup, j'ai rajouté quelques trucs en plus je peaufine tout cela et je mettrai la partie final sur le post pour les éventuelles personnes qui auraient ce problème.

    Merci à toi Laurent,
    Giloux

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Bon un dernière question pour la route !

    Je cherche à crée un fichier QVD avec des champs vides et qui ne recharge pas à chaque fois (pour évité qu'il supprime mes données)

    j'ai essayé avec un "If existe" mais cela ne fonctionne pas.
    je te mets mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /*Import test*/
     
    if exists(test.qvd)=0 then
     
    TBL1:
    Load * Inline [ id, osef, omg
     
    	];
    STORE TBL1 INTO test.qvd (qvd);	
     
    DROP TABLE TBL1;
     
    ENDIF
    Mais je ne suis pas du tout sur de ma syntaxe ... ! Après il existe peut être un autre moyen

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 132
    Points : 182
    Points
    182
    Par défaut
    Il existe des fonctions pour faire des vérifications et autres sur des qvd (regarde l'aide et tape qvd ).

    Exmple pour vérifier qu'un qvd existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not IsNull(QvdCreateTime('MonQvd.qvd')) then
    Si ton qvd n'existe pas tu inscris le code que tu souhaite apres un else.
    Pour vérifier le nombre de ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if QvdNoOfFields('MonQvd.qvd')>= 1 then

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Ant] [Ejb] Probléme de création d'ejb avec Genic
    Par rivierem dans le forum JOnAS
    Réponses: 7
    Dernier message: 25/06/2004, 16h21
  2. Réponses: 7
    Dernier message: 16/06/2004, 15h02
  3. Problème de création de table sous MySql
    Par ducamba dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2003, 09h59
  4. Problème de création de fenêtre
    Par tomateauketchup dans le forum DirectX
    Réponses: 1
    Dernier message: 08/06/2003, 19h42
  5. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo