Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Exclure des champs dès le chargement

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

1 Solution

Accepted Solutions
almamy_diaby
Creator
Creator

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

View solution in original post

8 Replies
Anonymous
Not applicable
Author

bonjour

avec un exemple de fichier, ou une simulation, et une idée du résultat attendu, peut être

😉

Not applicable
Author

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 ?

Anonymous
Not applicable
Author

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é

😉

Not applicable
Author

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 ?

Anonymous
Not applicable
Author

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

Not applicable
Author

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é !

almamy_diaby
Creator
Creator

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

Not applicable
Author

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