Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Je continue la création de mon fichier d'analyse et grâce à la communauté et aux docs en ligne je progresse... Cependant, il me manque quelques bases ce qui ralentit ma progression.
Mon dernier objectif est reproduire la totalité du scrip (en noir) ci-dessous pour l'ensemble des fichiers mensuels de l'année disponibles. Donc pouvoir disposer de tous les enregistrements ci-dessous pour chaque jour.
J'ai testé (en rouge) la création d'une boucle For.....next qui agit directement sur la construction de l'adresse des fichiers mais ....ça ne marche pas ! Auriez vous une idée svp ...peut-être plus simple ?
Le script (en noir) fonctionne très bien pour 1 seul mois et si je remplace le '06' par une * seule les données du dernier mois donc du dernier fichier sont présentes sur mes graphes.
let VAR03='01';
For a=0 to 11
let VAR04=VAR03+1;
if VAR04<10 then
VAR05='0'&VAR04
else
VAR05=VAR04
end if
let VAR06='[lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_'&VAR05&'_M-1.xls]';
//--------------------------------------------------------------------------------------------------
//Récupération du Nom du fichier source
//--------------------------------------------------------------------------------------------------
FICHIER:
LOAD distinct
FileBaseName() as Nom_Fichier
//FROM [lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_06_M-1.xls]
FROM VAR06
(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);
//--------------------------------------------------------------------------------------------------
//Récupération du Mois analysé directement à partir du nom du fichier source
//--------------------------------------------------------------------------------------------------
let MoisFichier = Left(Subfield(Peek('Nom_Fichier', 0,'FICHIER'),'_',5),2);
DROP Table FICHIER;
//--------------------------------------------------------------------------------------------------
//Création des variable de Début et Fin de mois étudié
//--------------------------------------------------------------------------------------------------
let VAR01='01/'&(MoisFichier) &'/2016';
let VAR02=date(VAR011,'DD/MM/YYYY');
let Date_jour_deb = monthstart(VAR02);
let Date_jour_fin = monthend(VAR02);
set Errormode=0;
//--------------------------------------------------------------------------------------------------
//Initialisation de la boucle de recherche de Champs par rapport à chacun des jour du mois étudié
//--------------------------------------------------------------------------------------------------
For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'
let Jour= left(date('$(Date_jour)'),5);
let Nom_jour= Capitalize(left(weekday('$(Date_jour)'),2));
let FieldN= '$(Nom_jour)'&' '&'$(Jour)';
//--------------------------------------------------------------------------------------------------
//Chargement des données dans la boucle pour un jour précisé ci-dessus
//--------------------------------------------------------------------------------------------------
[Disponibilité des ressources$]:
LOAD
[ID Activité],
[Structure Responsable],
[Libellé Activité],
...
[Spécificité],
[Ressource affectée],
[$(FieldN)] as QteCharge,
'$(Jour)' as Jour,
[Commentaire affectation]
// FROM [lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_06_M-1.xls]
FROM VAR06
(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);
//--------------------------------------------------------------------------------------------------
//Relance de la Boucle pour le jour suivant
//--------------------------------------------------------------------------------------------------
Next
next a
FOR MOIS= 1 to 12
if $(MOIS) <10 then
let MOIS='0'&$(MOIS);
endif
let MoisFichier = '$(MOIS)';
IF( FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls')>0) then
//--------------------------------------------------------------------------------------------------
//Création des variable de Début et Fin de mois étudié
//--------------------------------------------------------------------------------------------------
let VAR01='01/'&(MoisFichier) &'/2016';
let VAR02=date(VAR011,'DD/MM/YYYY');
let Date_jour_deb = monthstart(VAR02);
let Date_jour_fin = monthend(VAR02);
set Errormode=0;
//--------------------------------------------------------------------------------------------------
//Initialisation de la boucle de recherche de Champs par rapport à chacun des jour du mois étudié
//--------------------------------------------------------------------------------------------------
For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'
let Jour= left(date('$(Date_jour)'),5);
let Nom_jour= Capitalize(left(weekday('$(Date_jour)'),2));
let FieldN= '$(Nom_jour)'&' '&'$(Jour)';
//--------------------------------------------------------------------------------------------------
//Chargement des données dans la boucle pour un jour précisé ci-dessus
//--------------------------------------------------------------------------------------------------
[Disponibilité des ressources$]:
LOAD
[ID Activité],
[Structure Responsable],
[Libellé Activité],
//...
[Spécificité],
[Ressource affectée],
[$(FieldN)] as QteCharge,
'$(Jour)' as Jour,
[Commentaire affectation]
FROM [lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls]
(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);
//--------------------------------------------------------------------------------------------------
//Relance de la Boucle pour le jour suivant
//--------------------------------------------------------------------------------------------------
Next
ENDIF
Next
Bonjour et Merci,
Ceci ne fonctionne pas !!! Je n'ai pas de message d'erreur mais je ne charge pas de donnée .
Pour vérifier la fonction IF en amont, j'ai ajouté une variable pour visualiser comment elle se charge. Malheureusement, je constate qu'elle est toujours à valeur NULL malgré la présence des fichiers, de la bonne adresse de répertoire et aussi de la bonne orthographe. Auriez une idée car là je ne trouves vraiment pas ?
FOR MOIS= 1 to 12
if $(MOIS) <10 then
let MOIS='0'&$(MOIS);
endif
let MoisFichier = '$(MOIS)';
let VAR03 = FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls');
IF( FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls')>0) then
essais ça:
//--------------------------------------------------------------------------------------------------
//Récupération du Nom du fichier source
//--------------------------------------------------------------------------------------------------
for Each File in ('//EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*.xls ')
FICHIER:
LOAD distinct
FileBaseName() as Nom_Fichier
//FROM [lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_06_M-1.xls]
FROM $(File)
(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);
next File
LET Rows1 = NoOfRows('FICHIER'); //nombre de fichier dans ton dossier
For i=1 to $(Rows1)
let Code_Met = peek('Nom_Fichier',$(i),'FICHIER');
//--------------------------------------------------------------------------------------------------
//Récupération du Mois analysé directement à partir du nom du fichier source
//--------------------------------------------------------------------------------------------------
let MoisFichier = Left(Subfield('$(Code_Met)','_',5),2);
//--------------------------------------------------------------------------------------------------
//Création des variable de Début et Fin de mois étudié
//--------------------------------------------------------------------------------------------------
let VAR01='01/'&(MoisFichier) &'/2016';
let VAR02=date(VAR011,'DD/MM/YYYY');
let Date_jour_deb = monthstart(VAR02);
let Date_jour_fin = monthend(VAR02);
set Errormode=0;
//--------------------------------------------------------------------------------------------------
//Initialisation de la boucle de recherche de Champs par rapport à chacun des jour du mois étudié
//--------------------------------------------------------------------------------------------------
For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'
let Jour= left(date('$(Date_jour)'),5);
let Nom_jour= Capitalize(left(weekday('$(Date_jour)'),2));
let FieldN= '$(Nom_jour)'&' '&'$(Jour)';
//--------------------------------------------------------------------------------------------------
//Chargement des données dans la boucle pour un jour précisé ci-dessus
//--------------------------------------------------------------------------------------------------
[Disponibilité des ressources$]:
LOAD
[ID Activité],
[Structure Responsable],
[Libellé Activité],
[Spécificité],
[Ressource affectée],
[$(FieldN)] as QteCharge,
'$(Jour)' as Jour,
[Commentaire affectation]
// FROM [lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_06_M-1.xls]
FROM $(Code_Met)
(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);
//--------------------------------------------------------------------------------------------------
//Relance de la Boucle pour le jour suivant
//--------------------------------------------------------------------------------------------------
Next
Bonsoir et merci,
J'ai bien le comptage de mes 2 fichiers et après avoir ajouté 'Next i' en bas j'ai aussi une boucle de chargement MAIS ceci ne fonctionne que pour le nom du dernier fichier compté car le Nom_Fichier est chargé avant la boucle FOR i = .... donc lorsque i devient i=2 le Nom_Fichier est NULL !
J'ai essayé de monter la boucle FOR i=.... plus en amont mais cela ne marche pas non plus ;-(
Avez vous une autre idée ???
//--------------------------------------------------------------------------------------------------
//Récupération du Nom du fichier source
//--------------------------------------------------------------------------------------------------
For each File in ('Lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_M-1.xls')
FICHIER:
LOAD distinct
FileBaseName() as Nom_Fichier
FROM $(File)
(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);
next File
Let Rows1 = NoOfRows('FICHIER');
For i=1 to $(Rows1)
let Code_Met = peek('Nom_Fichier',$(i),'FICHIER');
// //--------------------------------------------------------------------------------------------------
// //Récupération du Mois analysé directement à partir du nom du fichier source
// //--------------------------------------------------------------------------------------------------
let MoisFichier = Left(Subfield('$(Code_Met)','_',5),2);
//--------------------------------------------------------------------------------------------------
//Création des variable de Début et Fin de mois étudié
//--------------------------------------------------------------------------------------------------
let VAR01='01/'&(MoisFichier) &'/2016';
....
[Commentaire affectation]
FROM $(Code_Met)
(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);
//--------------------------------------------------------------------------------------------------
//Relance de la Boucle pour le jour suivant
//--------------------------------------------------------------------------------------------------
Next
next i
Le code que je t'ai envoyé précédemment ne fonctionne pas parce que il y avait une erreur on niveau du IF:
IF( FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls')>0) then
En effet je devait pas mettre les parenthèses.
Le code ci-dessous devrait fonctionner. Je l'ai testé à mon niveau
FOR MOIS= 1 to 12
if $(MOIS) <10 then
let MOIS='0'&$(MOIS);
endif
let MoisFichier = '$(MOIS)';
IF FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls')>0 then
//--------------------------------------------------------------------------------------------------
//Création des variable de Début et Fin de mois étudié
//--------------------------------------------------------------------------------------------------
let VAR01='01/'&(MoisFichier) &'/2016';
let VAR02=date(VAR01,'DD/MM/YYYY');
let Date_jour_deb = monthstart(VAR02);
let Date_jour_fin = monthend(VAR02);
set Errormode=0;
//--------------------------------------------------------------------------------------------------
//Initialisation de la boucle de recherche de Champs par rapport à chacun des jour du mois étudié
//--------------------------------------------------------------------------------------------------
For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'
let Jour= left(date('$(Date_jour)'),5);
let Nom_jour= Capitalize(left(weekday('$(Date_jour)'),2));
let FieldN= '$(Nom_jour)'&' '&'$(Jour)';
//--------------------------------------------------------------------------------------------------
//Chargement des données dans la boucle pour un jour précisé ci-dessus
//--------------------------------------------------------------------------------------------------
[Disponibilité des ressources$]:
LOAD
[ID Activité],
[Structure Responsable],
[Libellé Activité],
//...
[Spécificité],
[Ressource affectée],
[$(FieldN)] as QteCharge,
'$(Jour)' as Jour,
[Commentaire affectation]
FROM [lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls]
(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);
//--------------------------------------------------------------------------------------------------
//Relance de la Boucle pour le jour suivant
//--------------------------------------------------------------------------------------------------
Next
ENDIF
Next
:-(( ,
Je ne comprends pas car j'ai repris l'ensemble du code que vous m'avez donné et j'ai conservé ma variable VAR03 pour vérifier la valeur de la fonction Filesize..... La valeur reste toujours NULL (cf. ci-dessous) et le chargement ne fonctionne toujours pas.
Peut-être que cela vient du fait que je travail avec Qlik Sense et non Qlik View ???
FOR MOIS= 1 to 12
if $(MOIS) <10 then
let MOIS='0'&$(MOIS);
endif
let MoisFichier = '$(MOIS)';
let VAR03 = FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls');
IF FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_*_$(MoisFichier)_M-1.xls')>0 then
MoisFichier=1
VAR03= NULL
Est ce que le fichier de Janvier Existe?
Et regarde la valeur que doit prendre VAR2 dans ton code initial ( let VAR02=date(VAR011,'DD/MM/YYYY')) .
Alors corrige VAR011 en VAR01
Non le fichier de Janvier n'existe pas mais Juin et Juillet oui et VAR03 reste à NUL quand même !!!
En effet il y avait une erreur sur VAR02 avec VAR011 mais la boucle ne va pas à cette ligne car la condition IF Filesize n'est pas respectée donc saut direct à Next !!
Je cherche aussi de mon côté donc j'ai remplacé le nom du fichier par sa désignation exact :
IF FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_20160527_06_M-1.xls')<>0 then
Et dans ce cas aussi la condition IF Filesize donne est null donc j'en déduis que c'est la fonction Filesize qui n'est pas correct !
Tu as écris IF FileSize('lib://EXTRACTIONS/LAPLACE_PlanDeCharge_Ressource_20160527_06_M-1.xls')<>0
tu as mis <> alors qu'on doit tester si le fichier donc la taille de celui doit > 0
Essai de revoir le nom du fichier parce que à mon niveau le test a été concluant