Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

erreur chargement script - append qvd

Bonjour

j'ai une application dans laquelle je charge des fichiers Excel (XLS) systématiquement identique. Seul le nom du fichier change mensuellement.

Pour limiter les temps de chargement et supprimer les fichiers XLS , je souhaitais créer un qvd et concatener mes fichiers XLS au fur et a mesure.

Afin d'avoir un identifiant unique, j'ai essayé de récupérer le nom du fichier (c'est pas terrible mais je ne trouve pas d'autre solution pour avoir un id unique) puis  ensuite je charge dans un QVD sauf si le nom du fichier existe mais en fait ça ne marche pas!!

j'ai essayé de créer un champ date d'extraction (today() as dateextract et de mettre uen clause where not existe today mais sanss suces également

ou alors j'ai un message d'erreur a la fin du script. ou alors si je supprime mes données je n'ai plus les data dans mon qvd .. bref .. désarroi 

J'ai regardé dans les forums, et sur les exemple que j'ai trouvé je ne peux pas les mettre en oeuvre car  je n'ai pas de "primary key" dans mes fichiers XLS. 

Pourriez vous m'aider sur ce point svp? merci

mon script :

Data:

LOAD [Compte d'achat],

     [Libellé Compte],

     [Compte matière],

     [Libellé Cpt matière],

      [QTE STK INI],

     [VAL STK INI],

     [QTE ENTREES],

     [VAL ENTREES],

     [QTE SORTIE],

     [VAL SORTIES],

     [QTE en stock],

     [Valeur stock],

     filename() as nomfichier

FROM

(biff, embedded labels, header is 1 lines, table is Rapport1$);

qvd:

Concatenate LOAD

[Compte d'achat],

     [Libellé Compte],

     [Compte matière],

     [Libellé Cpt matière],

     [QTE STK INI],

     [VAL STK INI],

     [QTE ENTREES],

     [VAL ENTREES],

     [QTE SORTIE],

     [VAL SORTIES],

     [QTE en stock],

     [Valeur stock],

     nomfichier

FROM

(qvd) Where not Exists(nomfichier) ;

Store Data into

(qvd);

Labels (1)
10 Replies
kevinchevrier
Partner - Creator III
Partner - Creator III

Bonjour,

J'aurai tendance à enlever "qvd:" avant ton concatenate.

Kevin

Anonymous
Not applicable
Author

Bonjour

Merci de ta réponse.

ça marche "a moitié" dans le sens ou lorsque je supprime mes fichiers XLS, je n'ai plus de données. par contre je n'ai plsu de message d'erreur.

je pensais que c'était le QVD qui allait servir de base de données ? suis je obligé de conserver mes extractions excel? 

kevinchevrier
Partner - Creator III
Partner - Creator III

Je ne comprends pas. Actuellement tu store "Data". Donc pourquoi ne pas concaténer tout dans cette même table si c'est ce que tu souhaites ?

Kevin

Anonymous
Not applicable
Author

heu.... je ne comprends pas trop.

en fait ce que je souhaiterai c'est :

- charger mes fichier(s) XLS dans un QVD (puis les supprimer / déplacer) (il s'agit des fichiers pour créer un historique des 2 dernières années)

- travailler depuis le QVD dans mon application

- incrémenter au fur et a mesure des périodes mes autres fichiers xls dans mon QVD en fonction d'une clause (soit le nom du fichier, soit un champ de date soit une autre solution.

- puis supprimer / déplacer les fichiers excel dont je n'aurais plus besoin

est ce plus clair?

christophebrault
Specialist
Specialist

Bonjour,

De ce que j'ai compris de ton besoin, je pense qu'il faut que tu fasses l'inverse dans ton script :

1 : Charger le QVD créé à partir des fichier excel

2 : charger les fichiers excel existant dans ton dossier avec un where not exists(nomfichier,filename())

3 : faire un store de ton QVD qui ecrasera le précédent

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

Maybe

Change the script with your fields, files, xls, path, etc.........



DIRECTORY;

//

// read all excel, add a filename_xls field

//

Data:

LOAD

    cod,

    desc,

    FileName() as filename,

    FileName() as filename_xls

FROM

[.\*.xlsx]

(ooxml, embedded labels, table is Foglio1);

//

// if qvd exists read the record with filename <> filename_xls

//

IF QvdCreateTime('Data.qvd') THEN

    TRACE 'Read QVD';

    Concatenate (Data)

    load * from Data.qvd (qvd)

    where

          not exists (filename_xls, filename)

    ;

ELSE

    TRACE 'Do not Read QVD';

ENDIF

//

// overwrite qvd without filename_xls field

//

DROP field filename_xls;

Store Data into Data.qvd (qvd);

Drop table Data;




Anonymous
Not applicable
Author

HI Massimo,

apologize for my english .. not as fluent as your's..

Il take your script , it seem's working with  no errors but after loading i've no data ? 

I understand the operation but i don't know all the code.. can you have a look please?

Data:

LOAD

     x,

     y,

     [VAL SORTIES],

     [QTE en stock],

     [Valeur stock],

    FileName() as filename,

     FileName() as filename_xls,

     Date(Date#(MOIS_en_date),'MMMM-YYYY') as _MoisYearStkIni,

      timestamp(now()) as _DateImport

FROM

(biff, embedded labels, header is 1 lines, table is Rapport1$);

//if qvd exists read the record with filename <> filename_xls

IF QvdCreateTime('Data.qvd') THEN

    TRACE 'Read QVD';

   

    Concatenate (Data)

   

    load * from Data.qvd (qvd)

       where

          not exists (filename_xls, filename) ;

         

ELSE

    TRACE 'Do not Read QVD';

ENDIF

//

// overwrite qvd without filename_xls field

//

DROP field filename_xls;

Store Data into Data.qvd (qvd);

Drop table Data;

Anonymous
Not applicable
Author

Bonsoir

Effectivement j'ai essayé mais je dois avoir un pb avec ma clause where not exist car mes données ne se charge pas.

sans doute a cause du nom de fichier

j'ai créé un  champ  'MoisYear' pour pouvoir faire la même chose ( ne pas charger dans mon qvd les données ou 'MoisYear' seraient pésent quelque soit le nom du fichier mais je n'y arrive pas ..

une petite idée?

maxgro
MVP
MVP

Add a comment to the last line

// Drop table Data;

Sorry I can't write in french

Il y a longtemps que j'ai étudié le Français a l'école, maintenant je ne peux que lire