Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Débutant sur l'outil Qlik Sense je souhaiterai vous exposer mon "problème" (en espérant que celui-ci n'en soit pas un).
Je charge une première base listant des événements avec leur date de création (Rapport:)
Je génère ensuite automatique un calendrier définis par une date de début et une date de fin. (Calendrier:)
Je souhaiterai ajouter au Calendrier: (via le script de chargement de données) un champ comptant le nombre d’événements crées depuis le début et jusqu’à chacune des date (et jusqu’à aujourd'hui) du calendrier (et ce grâce aux infos contenues dans Rapport:)
En espérant avoir été clair et en espérant que vous puissiez m'aider.
Cordialement,
Rémi
Re,
Je pense que je comprend mieux ton problème ou ton besoin plutôt.
Si je t'ai bien suivi tu veux pouvoir cumuler ton nombre d'évènements par date ? c'est bien çà ?
Si c'est le cas voici un nouveau fichier adapté avec deux formules faisant la même chose : Cumuler des événements par date. Ici j'utilise le même fichier avec des dates et des ventes. Il faudra l'adapter utiliser count(evenement) ou count(distinct(evenement) : on affinera au besoin
dans le fichier joint j'ai enlever dans la table la dimension ID faite avec autonumber
j'ai donc :
date ( tu prendras le champs date de ton calendrier)
sales avec sum(sales) additionne les ventes par date ( a adapter pour toi avec un count(évènement) pour avoir le nombre d'évènement par date)
rangesum(above(sum(sales),0,RowNo())) : cette mesure cumule les ventes en additionnant la somme des lignes précédentes à la ligne actuelle. Sachant que chaque ligne = une date
sum(aggr(rangesum(above(sum(sales),0,RowNo())),date)) : cette mesure fait la même chose mais en créant une table en mémoire pour cumuler les ventes à chaque date ( voir AGGR() dans l'aide )
Si tu sélectionnes une plage de date les deux formules cumuleront les ventes ou les évènements de la 1er date sélectionnée à la dernière date sélectionnée.
et la même :
sum(aggr(rangesum(above(sum( {$<date>} sales),0,RowNo())),date)) : celle ci est un peu différente puisque si tu sélectionnes une plage de dates elle comptera le cumul à partir du CUMUL des ventes existants à cette date jusqu'a la dernier date sélectionnée.
Pour aller plus loin :
billet de blog en anglais trés bien fait par Henric Cronström :
above fonction :
The As OF table : ( permet de générer un calendrier Cumulatif sans doute plus proche de ce que tu cherches)
Bruno
Bonjour Remi
Regarde du coté de cette fonction : autonumber
dans le script :
autonumber(événements) as événements_cumul
il est possible aussi de le faire dans les tableaux ou graphique avec la fonction rangesum() et above() pour cumuler les événements par date
Bruno
Bonjour Bruno,
Je vais de ce pas essayer de comprendre comment fonctionne la fonction autonumber.
En espérant que la solution soit la bonne (et que je comprenne son utilisation bien sur).
Merci encore,
Rémi
Bonjour
Ci joint un petit exemple avec la fonction autonumber
LA situation
une base avec des dates et des ventes :
date | sales |
01/05/2015 | 0 |
02/05/2015 | 10 |
03/05/2015 | 10 |
04/05/2015 | 10 |
05/05/2015 | 10 |
06/05/2015 | 10 |
07/05/2015 | 0 |
08/05/2015 | 0 |
09/05/2015 | 0 |
10/05/2015 | 0 |
objectif Avoir un numéro ID pour les dates lorsque les ventes sont > 0
ce qui donne ceci dans le script :
LOAD
if(sales>0,autonumber("date"))as ID,
"date",
sales
FROM [lib://Help Test/autonumber.xls]
(biff, embedded labels, table is Feuil1$);
permettant d'avoir ceci an tableau ds Qlik Sense ::
Merci Bruno,
Cet exemple illustre parfaitement ce que j'ai pu lire ce matin sur la fonction autonumber (exemple plus clair que celui exposé dans l'aide Qlik). Mais je n'arrive pas à imaginer que cela pourrait me permettre de compter les 'événements' parus avant une date donnée.
De ce que j'ai compris, autonumber me permet de donner un ID pour chacune de dates dont le critère "fixe" est sales >0 (dans ton exemple).
Dans mon cas, le critères est "variable" car est différent pour chaque date donnée (donc a chaque ligne de mon calendrier)
Par ailleurs, mon point de blocage concerne surtout le fait que je travaille avec deux bases. Je m'explique:
Je charge une première base contenant mes evenements ([Rapport])
[Rapport]:
LOAD
[Statut événement],
date([Date déclaration],'DD/MM/YYYY') as [Date jour déclaration]
FROM [lib://...]
(ooxml, embedded labels, header is 14 lines, table is [Rapport])
Puis je crée de manière indépendante à [Rapport] un [Calendrier] (afin d'avoir toute les dates dans celui-ci): [Calendrier]
/* variable date min et max pour l'interval */
Let varMinDate = Num('01/01/2015');
Let varMaxDate = Num('31/12/2030');
// generation des dates au format dd/mm/aaaa
TempCalendar:
REPLACE LOAD
Date($(varMinDate) + IterNo() - 1) as TempDate
AutoGenerate 1 While $(varMinDate) + IterNo() -1 <= $(varMaxDate);
//table avec detail date
Calendrier:
REPLACE LOAD
Year(TempDate) as year,
Month(TempDate) as month,
DATE(TempDate, 'DD/MM/YYYY hh:mm') as dtime
Resident TempCalendar
Order By TempDate ASC;
Ce que je souhaite faire, si l'autonumber répond a mon besoin, est de pouvoir rajouter à [Calendrier] une colonne (l'autonumber en l'occurence) dont la formule serait:
- de compter le nombre d'evenements dont [Date jour déclaration] < [dtime]
[Date jour déclaration] appartenant à [Rapport]
[dtime] appartenant à [Calendrier]
J'espère ne pas trop t’embêter avec mon problème mais c'est assez difficile d'expliquer avec des mots.
Merci en tout cas pour ton soutien.
Je vais essayer de me replonger dans la partie "Association entre les tables" si je trouve un tutoriel bien fait.
Rémi
Re,
Je pense que je comprend mieux ton problème ou ton besoin plutôt.
Si je t'ai bien suivi tu veux pouvoir cumuler ton nombre d'évènements par date ? c'est bien çà ?
Si c'est le cas voici un nouveau fichier adapté avec deux formules faisant la même chose : Cumuler des événements par date. Ici j'utilise le même fichier avec des dates et des ventes. Il faudra l'adapter utiliser count(evenement) ou count(distinct(evenement) : on affinera au besoin
dans le fichier joint j'ai enlever dans la table la dimension ID faite avec autonumber
j'ai donc :
date ( tu prendras le champs date de ton calendrier)
sales avec sum(sales) additionne les ventes par date ( a adapter pour toi avec un count(évènement) pour avoir le nombre d'évènement par date)
rangesum(above(sum(sales),0,RowNo())) : cette mesure cumule les ventes en additionnant la somme des lignes précédentes à la ligne actuelle. Sachant que chaque ligne = une date
sum(aggr(rangesum(above(sum(sales),0,RowNo())),date)) : cette mesure fait la même chose mais en créant une table en mémoire pour cumuler les ventes à chaque date ( voir AGGR() dans l'aide )
Si tu sélectionnes une plage de date les deux formules cumuleront les ventes ou les évènements de la 1er date sélectionnée à la dernière date sélectionnée.
et la même :
sum(aggr(rangesum(above(sum( {$<date>} sales),0,RowNo())),date)) : celle ci est un peu différente puisque si tu sélectionnes une plage de dates elle comptera le cumul à partir du CUMUL des ventes existants à cette date jusqu'a la dernier date sélectionnée.
Pour aller plus loin :
billet de blog en anglais trés bien fait par Henric Cronström :
above fonction :
The As OF table : ( permet de générer un calendrier Cumulatif sans doute plus proche de ce que tu cherches)
Bruno
Merci Bruno pour ton aide précieuse!
Ce n'est pas très intuitif comme formule mais cela correspond à ce que je cherchais.