Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
flochi75
Creator III
Creator III

Déterminer valeur min/max en fonction filtre année

Bonjour à toutes et à tous,

j'aimerai comparer les valeurs de certains champs  entre ceux de la première semaine du dossier et ceux de la dernière semaine.

Pour les dossiers débutés dans l'année étudiée, la première semaine porte le N°1. Pour les dossiers débutés l'année N-1, dans l'année étudiée, le N° de semaine est variable (dépend de la semaine de démarrage du dossier...)

Enfin, la N° de la dernière semaine est variable également...

Je n'arrive pas à m'en sortir...

Merci pour votre aide...

Florent.

21 Replies
flochi75
Creator III
Creator III
Author

Ouahou,

je suis abasourdi par la rapidité et l'aisance à laquelle tu as sorti cela !

par contre, cela remonte la valeur min et max des NO_SEMAINE par ID_Sejour et "Evenement"

ce qui je voudrais, c'est la valeur de chaque évenement, par séjour, sur les NO_SEMAINE min et max...

Florent.

brunobertels
Master
Master

Bonjour

Est ce que ceci correspond a ton besoin ?  :

si oui je te renvois mon fichier test

les deux mesures sont pour

* valeur dans l'évènement pour min sem :

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'ALIMENTATION',Min({$<NO_SEMAINE={$(=min(NO_SEMAINE))}>}ALIMENTATION),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'COMPORTEMENT',Min({$<NO_SEMAINE={$(=min(NO_SEMAINE))}>}COMPORTEMENT),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'CONTINENCE',Min({$<NO_SEMAINE={$(=min(NO_SEMAINE))}>}CONTINENCE),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'DEPLACEMENT',Min({$<NO_SEMAINE={$(=min(NO_SEMAINE))}>}DEPLACEMENT),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'HABILLAGE',Min({$<NO_SEMAINE={$(=min(NO_SEMAINE))}>}HABILLAGE),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'RELATION',Min({$<NO_SEMAINE={$(=min(NO_SEMAINE))}>}RELATION)))))))

Et pour valeur dans l'évènement pour MAX sem :

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'ALIMENTATION',min({$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}ALIMENTATION),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'COMPORTEMENT',min({$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}COMPORTEMENT),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'CONTINENCE',min({$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}CONTINENCE),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'DEPLACEMENT',min({$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}DEPLACEMENT),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'HABILLAGE',min({$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}HABILLAGE),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'RELATION',min({$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}RELATION)))))))

en gros çà dit pour min semaine

cherche dans la liste d'évènements possibles (A,B,C,D)  l'évènement A :

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'ALIMENTATION'

puis pour le plus petit NO_semaine  de l'événement :

{$<NO_SEMAINE={$(=min(NO_SEMAINE))}>}

renvoi la valeur trouvée dans l'évènement :

min(évènementA) [ici j'ai pris min mais c'est juste pour renvoyer la valeur trouvée

Bruno

flochi75
Creator III
Creator III
Author

ça me semble ça...

du coup, pourquoi le 1er min ?

je faisais         DIM 1 : ID_SEJOUR

                      DIM 2 : ALIMENTATION

                      EXPR 1 : mod($<NO_SEMAINE={$(=Min(NO_SEMAINE))}>}ALIMENTATION)

                      EXPR 2 :mod({$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}ALIMENTATION)

et ça ne marchait pas...

flochi75
Creator III
Creator III
Author

j'ai aussi remplacer "mod" par "avg"

puis j'ai essayé avg(aggr(avg(distinct {$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}ALIMENTATION),ID_SEJOUR)) en enlevant DIM 1 et ça ne marchait pas non plus... (je ne suis pas sûr ici de la position des parenthèses mais qvw était ok...)

brunobertels
Master
Master

Re

alors pour ceci :

ça me semble ça...

du coup, pourquoi le 1er min ?

je faisais         DIM 1 : ID_SEJOUR

                      DIM 2 : ALIMENTATION

                      EXPR 1 : mod($<NO_SEMAINE={$(=Min(NO_SEMAINE))}>}ALIMENTATION)

                      EXPR 2 :mod({$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}ALIMENTATION)

et ça ne marchait pas...


pour MOD voici ce que dit l'aide Mod() est une fonction modulo mathématique qui renvoie le reste non négatif d'une division entière. Je sais pas bien a quoi peut servir cette fonction mais pour Mod( 7,2 ) çà divise 7 par 2 et renvoi le reste si il existe , 0 si le reste est 0 et null si le reste n'est pas un entier

Ensuite pour les EXPR 1 et 2 , ceux sont les formes de base qu'il faut ensuite "étendre" à chaque événements possible avec des IF et Valuelist ce qui donne sous la forme complète ceci une fois étendue : ( pour afficher le NO_SEM mini)

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'ALIMENTATION',Min({$<ALIMENTATION={'>0'}>}NO_SEMAINE),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'COMPORTEMENT',Min({$<COMPORTEMENT={'>0'}>}NO_SEMAINE),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'CONTINENCE',Min({$<CONTINENCE={'>0'}>}NO_SEMAINE),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'DEPLACEMENT',Min({$<DEPLACEMENT={'>0'}>}NO_SEMAINE),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'HABILLAGE',Min({$<HABILLAGE={'>0'}>}NO_SEMAINE),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'RELATION',Min({$<RELATION={'>0'}>}NO_SEMAINE)))))))

flochi75
Creator III
Creator III
Author

ok,

mais sur mon post juste avant, ma question est :

pourquoi utilisé ce "min" ?

Capture.PNG

brunobertels
Master
Master

Re,

Pour ca  :

j'ai aussi remplacer "mod" par "avg"

puis j'ai essayé avg(aggr(avg(distinct {$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}ALIMENTATION),ID_SEJOUR)) en enlevant DIM 1 et ça ne marchait pas non plus... (je ne suis pas sûr ici de la position des parenthèses mais qvw était ok...)

avg(aggr(avg(distinct {$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}ALIMENTATION),ID_SEJOUR))


ta formule dit en gros la moyenne de la moyenne des valeurs de ALIMENTATION suivant les semaines distinctes MAX aggrégé par ID SEJOUR


flochi75
Creator III
Creator III
Author

oui, c'est ce que je voulais, mais ca ne marchait pas non plus...

brunobertels
Master
Master

Re,

On va y arriver ))

pour çà

ok,

mais sur mon post juste avant, ma question est :

pourquoi utilisé ce "min" ?

Capture.PNG

le min ici c'est juste pour renvoyer une valeur , on pourrait mettre sum ou max ou avg peut importe du moment ou nous sommes sur que pour un ID SEJOUR et une semaine MINI ou une SEMAINE MAXI et pour un EVENEMENT il n'y a qu'une valeur possible dans la colonne Alimentation ou séjour ou autre. Ce qui est bien le cas à priori dans tes données.

brunobertels
Master
Master

OK

je l'ai testé  indépendamment elle marche

mais un fois dans un tableau elle n'affiche de résultat que pour alimentation alors que je l'ai adapté pour chaque évenement :

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'ALIMENTATION',avg(aggr(avg(distinct {$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}ALIMENTATION),ID_SEJOUR)),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'COMPORTEMENT',avg(aggr(avg(distinct {$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}COMPORTEMENT),ID_SEJOUR)),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'CONTINENCE',avg(aggr(avg(distinct {$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}CONTINENCE),ID_SEJOUR)),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'DEPLACEMENT',avg(aggr(avg(distinct {$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}DEPLACEMENT),ID_SEJOUR)),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'HABILLAGE',avg(aggr(avg(distinct {$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}HABILLAGE),ID_SEJOUR)),

if(

valuelist('ALIMENTATION','COMPORTEMENT','CONTINENCE','DEPLACEMENT','HABILLAGE','RELATION')=

'RELATION',avg(aggr(avg(distinct {$<NO_SEMAINE={$(=Max(NO_SEMAINE))}>}RELATION),ID_SEJOUR))))))))