Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Je progresse doucement sur Qlik Sense mais je ne reste malheureusement qu'un mécanicien et non un informaticien ;-(
Enfin !! J'ai vient de construire une application à partir d'un fichier Excel avec un grand nombre de colonne. Parmi les colonnes, il en existe plusieurs qui ont la même structure du nom de colonne.
Pour aller plus loin dans l'exploitation de mon fichier j'ai besoin de modifier encore peu mon script en incluant des conditions sur le nom des colonnes. En clair je voudrais savoir comment transcrire dans mon script les éléments suivant :
- Créer en début de script une variable VAR1 en fonction de la date du jour de chargement : VAR1=(Date_du_jour - 7)
- Charger normalement toutes les colonnes de mon fichier qui ont un nom de colonne finissant par VAR1
- Assembler dans un même champs [AUTRESEM] toutes les colonnes dont le nom de colonne ne finit pas par VAR1
Sauriez vous m'aider ?
Merci d'avance
Franck
Bonjour,
Je pense que le code ci-dessous va t'aider. Essaie de bien gérer les variables Date_jour_deb et Date_jour_fin
let Date_jour_deb = date(today()-7,'DD/MM/YYYY');
let Date_jour_fin = date(today(),'DD/MM/YYYY');
set Errormode=0;
For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'
let Jour= left(date('$(Date_jour)'),5);
[Feuil1]:
LOAD
[Mesure],
[Départ.],
[Code],
[Forme],
[Capit],
[$(Jour)] as [AUTRESEM],
'$(Jour)' as Jour
FROM [lib://Desktop/Reprise_Qlik_121_07.xlsx]
(ooxml, embedded labels, table is Feuil1);
Next
bonjour
avec un exemple de fichier, ou une simulation, et une idée du résultat attendu, peut être
😉
Merci,
Je vais essayer d'éclaircir mon sujet :
Ma table ressemble à cela :
et mon script à cela
[Feuil1]:
LOAD
Left(Subfield(Filebasename(),'_',4),2) as VAR02,
[Mesure],
[Départ.],
[Code],
[22/05],
[25/05],
[01/06],
[02/06],
[03/06],
[04/06],
[05/06],
[06/06],
[07/06],
[02/07],
[05/07],
[Forme],
[Capit]
FROM [lib://Desktop/Reprise_Qlik_121_07.xlsx]
(ooxml, embedded labels, table is Feuil1);
Dans l'exemple ci-dessus,
- je souhaiterais créer une variable VAR01 qui serait le résultat de la soustraction de VAR02-1 soit (VAR01=06).
- je souhaiterais charger normalement les champs [Mesure],[Départ.],[Code],Forme],[Capit]
- je souhaiterais charger normalement et séparément les champs dont les deux derniers chiffres sont égal à la valeur de ma variable VAR01. Donc tous les champs du type [*/VAR01] soit [*/06]
- je voudrais charger les autres champs [22/05],[25/05], [02/07],[05/07] sous un même et unique champs dont le nom serait [AUTRESEM].
Voilà j'espère que j'ai réussi à être clair ?
le nombre de semaines [jj/mm] est donc variable entre 2 fichiers ?
et donc le nombre de colonne dans le load aussi.
faut ruser, pour que la semaine [jj/MM] deviennent une occurence d'une dimension semaine, et ensuite pouvoir qualifier chaque ligne d'une dumension TypeSemaine, avec des occurences "a traiter" ou "AutresSemaine".
ou alors faire un load sur un nombre de champs variable, mais çà me parait plus compliqué
😉
Merci beaucoup,
Le nombre de colonne est effectivement variable en fonction des fichiers sources d'où mon souhait de passer par le script plutôt que par des filtres sur des n° de semaine qui n'en sont pas !
Je comprends votre réponse mais je préférerais rester sur du script conditionnel. Je suis persuadé qu'il est possible d'écrire en format informatique Qlik :
"Charger les champs A, B et C et charger tous les champs qui finissent par "/VAR01"
Assembler tous les champs (type crosstable) qui ne finissent pas par "/VAR01" dans le champs AUTRESEM"
Maintenant je dois avouer être incapable de transformer cette phrase en langage Qlik ....
Connaissez vous quelque un qui peut m'aider ?
bonjour
Mais pourquoi vouloir que les éléments [jjmm] soit des dimensions, alors que çà ressemble plutôt à des occurences d'une dimension [jour-mois].
et vous allez gérer comment le fait d'avoir un nombre différent d'enregistrement à chargement ?
LD
Bonjour,
En effet, c'est sans doute un problème !!!
Cependant je ne sais pas comment faire autrement. Que proposez-vous?
A chaque dimension [jjj/mm] j'ai plusieurs centaine de ligne de données associées que je dois comparer à un autre fichier qui lui est différent puisque j'ai une dimension [DATE_RAPPORT] !!!
Je vois avec vos questions que je n'ai pas été assez loin sur ma problématique peut-être ???
Mon problème aujourd'hui est que j'ai une fonction Crosstable qui me transforme toutes mes dimensions après [Code] en une seule dimension [QTECHARGE]. Mais comme vous le constatez, à chaque fichier mensuel, après la dimension [Code] j'ai un bout du mois précédent et avant la dimension [Forme] j'ai un bout du mois suivant. Donc quand j'analyse une dimension [jj/mm] je peux l'avoir deux fois. Une fois dans le fichier du mois étudié et une fois dans le fichier du mois précédent ou suivant ????
D'où mes questions pour ne pas charger les dimensions [jj/mm] qui sont différentes du mois étudié !
Bonjour,
Je pense que le code ci-dessous va t'aider. Essaie de bien gérer les variables Date_jour_deb et Date_jour_fin
let Date_jour_deb = date(today()-7,'DD/MM/YYYY');
let Date_jour_fin = date(today(),'DD/MM/YYYY');
set Errormode=0;
For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'
let Jour= left(date('$(Date_jour)'),5);
[Feuil1]:
LOAD
[Mesure],
[Départ.],
[Code],
[Forme],
[Capit],
[$(Jour)] as [AUTRESEM],
'$(Jour)' as Jour
FROM [lib://Desktop/Reprise_Qlik_121_07.xlsx]
(ooxml, embedded labels, table is Feuil1);
Next
GENIAL !!!!
Merci beaucoup, c'est exactement ce que je cherchais, je n'avais pas pensé à la fonction FOR....Next !
BRAVO
Si je peux me permettre une autre question complémentaire....
Il s'agirait de paramétrer la date de début et la date de fin en fonction du nom du fichier. En effet le nom de fichier contient le n° de mois étudié donc je pensais pouvoir le récupérer et donc paramétrer la Date_jour_deb et Date_jour_fin avec ce paramètre mais ce que j'ai écrit ne fonctionne pas !! Sauriez vous me dire où est mon erreur ?
Encore merci
let MoisFichier = Left(Subfield(Filebasename(),'_',4),2);
let VAR01='01/' & (MoisFichier) & '/2016';
let VAR02='31/' & (MoisFichier) & '/2016';
let Date_jour_deb = date#(VAR01,'DD/MM/YYYY');
let Date_jour_fin = date#(VAR02,'DD/MM/YYYY');
set Errormode=0;
For Date_jour= '$(Date_jour_deb)' to '$(Date_jour_fin)'
let Jour= left(date('$(Date_jour)'),5);
[Feuil1]:
LOAD
[Mesure],
[Départ.],
[Code],
[Forme],
[Capit],
[$(Jour)] as AUTRESEM,
'$(Jour)' as Jour
FROM [lib://Desktop/Reprise_Qlik_121_06.xlsx]
(ooxml, embedded labels, table is Feuil1);
Next