Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour je suis nouveau sur QlikView et travaille sur mon premier projet.
Une partie des données utilisées par mon document provient de fichiers XLSX mis a jours tous les mois.
L'idée est que les utilisateurs les stockent dans un dossier dédié et que l'application parvienne a identifier le dernier fichier ajouté pour l'utiliser au chargement des données.
J'ai donc créé une boucle sur les fichiers oú v_stringFileList est une variable dont la valeur correspond à la pattern de nom de fichier a parcourir (un préfixe, un joker * et un suffixe)
filelist:
FOR each File IN filelist ('$(v_stringFileList)')
fileTable:
LOAD FileName('$(File)') as Filename,
FileBasename() as FileBasename,
FileExtension() as FileExtension,
FileDir() as FileDir,
//FilePath() as FilePath,
FileSize('$(File)') as FileSize,
FileTime('$(File)') as FileTime
FROM '$(File)';
next File
Cela me stocke les informations sur les fichier a partir de quoi je détermine le fichier qui m'interesse. En l'occurence les nom de fichiers ayant une date je me base sur le nom du fichier.
SET v_lefichieraimporter = MaxString(Filename);
En mode affichage dans un bloc texte je parviens bien a récupérer le nom de fichier voulu grace a l'expression
= $(v_lefichieraimporter);
Mais dans le script de chargement des données cela ne fonctionne pas.
LOAD *
FROM
FROM [$(v_lefichieraimporter)] // J'ai essayé pas mal de combinaisons $(=$(v_lefichieraimporter)), et d'autres plus incongrues
Quelqu'un aurait-il un conseil ? c'est frustrant de parvenir a évaluer un variable via une expression et ne pas y parvenir dans le script…
Il doit y avoir un petit truc que je n'ai pas compris...
merci de votre aide
J'ai mis en place une solution alternative qui consiste a récupérer le nom de mon fichier par le biais d'une table temporaire dans laquelle je recharge filetable dans l'ordre decroissant du nom de fichier puis récupère le nom de fichier de la premiere ligne avec la fonction peek().
TMP:
LOAD Filename RESIDENT fileTable ORDER BY Filename desc;
LET v_sourceFile = peek('Filename',0,'TMP');
DROP TABLE TMP;
et ça marche…