Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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
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
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
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,
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
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...