Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Création, manipulation de variables

Bonjour,

Je suis nouveau sur QlikView et après avoir arpenté de nombreuses FAQ ou Tutoriels, je ne trouve pas vraiment de solution à mes questions. Et dans l'attente d'une future formation QlikView...

En pièce-jointe il y a un exemple de fichier avec des données à manipuler.

Ce fichier contient 3 variables : ID_Restitution_, Indicateurs, periode (format YYYYMMDD)

L'idée est de créer de nouvelles variables qui sont une somme des indicateurs en fonction de l'ID_Restitution_ et de la periode. Puis au final restituer cette information dans un graphique.

1) Comment créer une variable, par exemple vDirect, qui sera égale à la somme des indicateurs pour les ID_Restitution commençant par "KP_01_001 et KP_01_002"  en fonction de la variable periode?

2) Comment créer une variable qui s'appellera vSemaine, qui contiendra le numéro de la semaine en fonction de la variable periode?

3) Comment créer une variable periode_bis qui sera au format DD/MM/YYYY par rapport à la variable periode?

4) Comment stocker ces nouvelles variables dans la table source? Ou dans une autre table?

Je sais qu'il y a pas mal de questions, mais je vous remercie par avance de votre retour.

Labels (1)
1 Solution

Accepted Solutions
Not applicable
Author

Bonjour David,

Merci, mais je n'arrive pas à faire fonctionner la fonction WildMatch correctement.

Dans un premier temps je suis parti sur les indications de Benjamin, qui me permettent à l'affichage d'obtenir ce que je souhaite dans un graphique.

a) Au moment du LOAD des données, j'ai créé une nouvelle variable Date avec le script suivant :

LOAD ID_Restitution_,

          Indicateurs,

          periode,

          Date(Date#(periode,'YYYYMMDD')) as Date

FROM ...;

b) Ensuite j'ai créé une table de temps avec le script suivant (trouvé sur le blog http://www.qlikdiscovery.fr/) :

LET vMinDate= Num(peek('Date',0,'Donnees_sources'));

LET vMaxDate= Num(peek('Date',-1,'Donnees_sources'));

ChampDate:

LOAD

date ($(vMinDate)+IterNo()-1) as  MaDate

AUTOGENERATE (1)

WHILE $(vMinDate)+ IterNo()-1<= $(vMaxDate);

Calendrier:

LOAD

  MaDate as Date,

  Year(MaDate) as Année,

  'T ' & Num(Ceil( Month(MaDate)/3), '(ROM)0') as Trimestre,

  Month(MaDate) as Mois,

  MonthEnd(MaDate) as DateFinMois,

  Week(MaDate) as Semaine,

  WeekDay(MaDate) as JourSemaine,

  Day(MaDate) as Jour

RESIDENT ChampDate;

DROP TABLE ChampDate;

SET vMinDate = ;

SET vMaxDate = ;

Le lien est fait automatiquement avec les variables Date dans les deux tables.

c) Dans la création de mon graphique, dans l'onglet Expressions, j'ai mis comme définition :

Sum({$<ID_Restitution_={"KP_01_001*","KP_01_002*"}>}[Indicateurs])

Ça fonctionne correctement, je peux jouer avec la dimension temps en abscisse : Date, Semaine etc.

Dernier problème :

1) Je ne sais pas s'il y a plus simple que de faire ce que j'ai fait dans le point c)

2) Comme au final les rapports doivent être à destination de personnes du métier (donc a priori pas de code), est-il possible de stocker la formule du point c) dans une variable que je nommerai par exemple rech_aboutie qui leur permettrait de créer un graphique en allant chercher la variable rech_aboutie pour l'expression plutôt que tout retaper?

Ce qui au passage veut dire stocker la formule quelque part, pour si changements il y a, les faire qu'une fois.

Si oui, comment faire?

Dans le script, j'ai essayé avec un

SET rech_aboutie=Sum({$<ID_Restitution_={"KP_01_001*","KP_01_002*"}>}[Indicateurs]);

Mais ça ne fonctionne pas, quand je fais référence à rech_aboutie dans le graphique.

Cordialement,

Guillaume

View solution in original post

5 Replies
Not applicable
Author

Bonjour,

Il y a en effet beaucoup de questions mais qui n'en renvoie qu'à une seule : Le principe du décisionnel.

Dans un premier temps, il est nécessaire d'être familiarisé avec les concepts de dimensions et tables de faits.
Il n'y a aucune variable à mettre en oeuvre puisque les 4 demandes citées sont de type "Comment représenter un indictateur en fonction d'une dimension".

Du coup, Qlikview et autre outil BI le gère automatiquement.

Ceci étant dit, la réponse à la première question est de passer par une dimension calculée au sein d'un graphique.

Pour toutes les autres questions, il faut simplement créer une table de dimension Temps qui sera raccordé à la table de fait.


Pour résumé, il faut raccorder le champ période à une table de temps que l'on trouve partout sur le site. Ensuite, il suffit de faire des graphes en spécifiant comme dimension la première colonne du fichier et comme indicateur la seconde.

Cordialement,

Benjamin

Not applicable
Author

Merci Benjamin,

Je vais continuer de chercher avec vos remarques comment créer une dimension calculée ainsi qu'une table de dimension Temps.

Mais d'après, ce que vous écrivez, a priori il n'est pas nécessaire de passer par le Script. Tout semble pouvoir se faire par "clique-bouton".

Guillaume

larouge69
Contributor III
Contributor III

Bonsoir,

Pour essayer de vous aider :

Point 1. Essayer de manipuler la fonction wildmatch () dans votre script. Cela vous permettra de catégoriser via des dimensions les indicateur de votre fichier. Par exemple, wilmatch(ID_Restitution,'*001','*002') as [...] Les agrégats se feront en auto en fonction de la dimension période.

Sinon, un droite(ID_Restitution;gauche(ID_Restitution;10);2) dans excel vous permet d'ajouter une dimension supplémentaire à votre fichier source.

Point 2. Convertissez directement le format de la colonne Période en format date type AMJ.

Dans le script, Year(Période), Month(Période), Week(Période) seront vos amies.

Là encore vous pouvez accommoder votre fichier source

Point 3 et 4. Résolu par le format corrigé dans Excel

Cordialement,

Not applicable
Author

Bonjour David,

Merci, mais je n'arrive pas à faire fonctionner la fonction WildMatch correctement.

Dans un premier temps je suis parti sur les indications de Benjamin, qui me permettent à l'affichage d'obtenir ce que je souhaite dans un graphique.

a) Au moment du LOAD des données, j'ai créé une nouvelle variable Date avec le script suivant :

LOAD ID_Restitution_,

          Indicateurs,

          periode,

          Date(Date#(periode,'YYYYMMDD')) as Date

FROM ...;

b) Ensuite j'ai créé une table de temps avec le script suivant (trouvé sur le blog http://www.qlikdiscovery.fr/) :

LET vMinDate= Num(peek('Date',0,'Donnees_sources'));

LET vMaxDate= Num(peek('Date',-1,'Donnees_sources'));

ChampDate:

LOAD

date ($(vMinDate)+IterNo()-1) as  MaDate

AUTOGENERATE (1)

WHILE $(vMinDate)+ IterNo()-1<= $(vMaxDate);

Calendrier:

LOAD

  MaDate as Date,

  Year(MaDate) as Année,

  'T ' & Num(Ceil( Month(MaDate)/3), '(ROM)0') as Trimestre,

  Month(MaDate) as Mois,

  MonthEnd(MaDate) as DateFinMois,

  Week(MaDate) as Semaine,

  WeekDay(MaDate) as JourSemaine,

  Day(MaDate) as Jour

RESIDENT ChampDate;

DROP TABLE ChampDate;

SET vMinDate = ;

SET vMaxDate = ;

Le lien est fait automatiquement avec les variables Date dans les deux tables.

c) Dans la création de mon graphique, dans l'onglet Expressions, j'ai mis comme définition :

Sum({$<ID_Restitution_={"KP_01_001*","KP_01_002*"}>}[Indicateurs])

Ça fonctionne correctement, je peux jouer avec la dimension temps en abscisse : Date, Semaine etc.

Dernier problème :

1) Je ne sais pas s'il y a plus simple que de faire ce que j'ai fait dans le point c)

2) Comme au final les rapports doivent être à destination de personnes du métier (donc a priori pas de code), est-il possible de stocker la formule du point c) dans une variable que je nommerai par exemple rech_aboutie qui leur permettrait de créer un graphique en allant chercher la variable rech_aboutie pour l'expression plutôt que tout retaper?

Ce qui au passage veut dire stocker la formule quelque part, pour si changements il y a, les faire qu'une fois.

Si oui, comment faire?

Dans le script, j'ai essayé avec un

SET rech_aboutie=Sum({$<ID_Restitution_={"KP_01_001*","KP_01_002*"}>}[Indicateurs]);

Mais ça ne fonctionne pas, quand je fais référence à rech_aboutie dans le graphique.

Cordialement,

Guillaume

Not applicable
Author

Pour variabiliser la formule, ça fonctionne en faisant :

SET rech_aboutie=Sum({$<ID_Restitution_={"KP_01_001*","KP_01_002*"}>}[Indicateurs]);


Puis dans l'expression du graphique : $(rech_aboutie)


J'ai fait un mixe entre SAS et QlikView : &(rech_aboutie) ne fonctionnait pas...