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

Courbes affichées en fonction d'une séléction

Bonjour à tous.

J'ai du créer en dur une liste de sélection. Elle se nomme: "Sonde".

Sonde:

Load * Inline [

Sonde

Sonde1

Sonde2

Sonde3

etc...

J'ai également un graphique qui reprends toutes les courbes correspondant à mes sondes.

2017-01-23 15_50_55-QlikView x64 Personal Edition - [GTO_].png

Comme vous le voyez, c'est surchargé. Il faut que je donne la possibilité à mes utilisateurs de n'afficher que les courbes qu'ils souhaitent. J'ai donc créé une liste de sélection nommée "Sonde" et qui reprends l'ensemble de mes sondes.

Dans mon graphique, chaque expression se présente comme suit: if(IsNull(Sonde),1,if(Sonde='Sonde 1',1,0))

J'ai essayé aussi: if(len(Sonde)=0,1,if(WildMatch(Sonde,'*Sonde 2*'),1,0))

Mais ça ne fonctionne pas. En fait, dans ma liste de sélection, si je clique sur une sonde et une seule, j'ai bien une seule courbe affichée. Mais si j'en sélectionne plusieurs en même temps, toutes sont affichées et pas seulement celles que j'ai sélectionné.

Quelqu'un peut-il me venir en aide svp.

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

C'est beaucoup plus clair.

Ta structure de données n'est pas génial, ce qui complique un peu les choses au niveau de l'interface. Il faudrait toujours essayé de te rapprocher d'un modèle en étoile (ou flocon).

En gardant ta structure, il faut utiliser les condition suivantes (en remplaçant le nom de la sonde) :

WildMatch('|'&Concat(Sonde,'|')&'|', '*|Appels téléphoniques|*')

Explication :

  • Il faut toujours utiliser une fonction d'agrégation. Si tu n'en met pas, il utilisera par défaut la fonction d'agrégation Only() qui retourne la valeur sélectionnée lorsqu'il y en a qu'une sinon elle retourne Null(). C'est une des raisons pour laquelle ça ne marchait pas.
    Dans ce cas, j'utilise la fonction d'agrégation Concat() avec le séparateur '|'.
  • Pour ne pas avoir de problème avec le WildMatch avec des noms de sonde se retrouvant dans un autre nom de sonde, comme par exemple 'Factures' et 'Factures liquidées', je rajoute un '|' avant et après ma sélection concaténée et je recherche '*|NomDeLaSonde|*'
  • Pas besoin de if

Note: Pour mail tu n'a pas mis Sum() dans ton expression, c'est donc Only() qui est utilisé et vu qu'il y a plusieurs valeurs par jour, rien ne s'affiche.

View solution in original post

7 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour,

Pouvez-vous fournir une application QlikView avec un jeux de données et le graphique, ou fournir un peu plus d'information sur la dimension utilisée (et un exemple des valeurs possibles) et l'expression ou les expressions utilisées.

Not applicable
Author

Non je ne peux pas. Je n'ai que la version gratuite de qlikview donc vous ne pourrez pas ouvrir le rapport sur votre poste. Concernant les données, elles sont extraites de bases hétérogènes et non d'un datamart et constituent des données à caractère confidentiel (santé). Je suis désolé mais je ne crois pas pouvoir vous fournir plus que mon explication.

sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour Bertrand,

Si les données sont confidentielles, je comprend très bien que tu ne puisse pas les transmettre.

Pour ton information, vu que tu utilises la version gratuite, c'est toi qui ne pourrais pas ouvrir une application que je t'enverrai. Mais moi qui est une licence, je peux ouvrir tes applications sans problème.

Si tu ne peux pas fournir un peu plus d'information:

  • dimension utilisée dans ton graphe (et un exemple des valeurs possibles)
  • l'expression ou les expressions utilisées)
  • une image de ton diagramme

, je crains que l'on ne puisse pas t'aider.

C'est un peu comme si tu nous demandais combien font 2 + ...

Not applicable
Author

Voici le fichier Qlikview.

Le soucis porte sur l'onglet "Volume par sonde".

A gauche, on voit la liste "Sonde" qui est crée par le script:

Sonde:

Load * Inline [

Sonde

Pages à trier

Pages triées

Pages numérisées

Tâches générées

Tâches triées

Tâches de tri traitées

Tâches traitées

Tâches annulées

Tâches induites crées

Tâches induites traitées

Tâches induites annulées

Tâches affectées

Factures

Factures liquidées

PEC

Feedback

Documents générés

Courriers

Courriers feedback générés

Courriers feedback envoyés

Fax

Mails

Appels téléphoniques

Conventions

];

Au centre, on voit le graph "Volume par sonde" qui est surchargé.

Chaque fois qu'on clic sur un élément de la liste "Sonde", seule la courbe correspondante est affichée ce qui me convient.

Là où ça ne fonctionne plus, c'est quand on sélectionne plus d'une "Sonde". Si j'en sélectionne deux ou plus, toutes les courbes s'affichent sur le graph comme si je n'avais rien sélectionné.

Dans mon graph, j'ai juste la dimension Date (=WeekDay(Date)&' '&date(date#(Date,'YYYY-MM-DD'),'DD-MMM-YYYY').

J'ai ensuite une expression pour chaque sonde par exemple: Sum(VolumeAppelsTelephoniques)

J'ai coché "Conditionnel" et j'ai rempli les expressions comme cet exemple: if(IsNull(Sonde),1,if(Sonde='Appels téléphoniques',1,0)).

J'ai donc autant d'expressions et de conditionnelles que d'élément dans ma liste "Sonde".

J'espère que ça suffira pour m'aiguiller

Cordialement

brunobertels
Master
Master

Bonjour

je rejoins Sébastien un peu plus de détail aidera la communauté.

Toutefois a ce que je comprends tu as construit ton graphique avec une dimension temporel ( Date)

puis ajouter différente mesure pour avoir sur ton graph la courbe de chaque sonde

Tu souhaites pouvoir sélectionner les différentes sondes pour n'afficher que celles-ci et alléger ton graph

Tu as créer une liste avec un load inline Sone 1 Sonde 2 etc , j'imagine que cette table de liste est reliée à une autre table

Dans ce cas plutot que d'avoir une dimension Date et ajouter une mesure par sonde ( c'est ce qui explique que lorsque tu veux en sélecitonner plusieurs tu ne peux pas a cause du If Statement)

Tu peux essayer ceci

1er Dimension : Date

2ème Dimension : Sonde

Puis ta mesure Sonde globale

sfatoux72
Partner - Specialist
Partner - Specialist

C'est beaucoup plus clair.

Ta structure de données n'est pas génial, ce qui complique un peu les choses au niveau de l'interface. Il faudrait toujours essayé de te rapprocher d'un modèle en étoile (ou flocon).

En gardant ta structure, il faut utiliser les condition suivantes (en remplaçant le nom de la sonde) :

WildMatch('|'&Concat(Sonde,'|')&'|', '*|Appels téléphoniques|*')

Explication :

  • Il faut toujours utiliser une fonction d'agrégation. Si tu n'en met pas, il utilisera par défaut la fonction d'agrégation Only() qui retourne la valeur sélectionnée lorsqu'il y en a qu'une sinon elle retourne Null(). C'est une des raisons pour laquelle ça ne marchait pas.
    Dans ce cas, j'utilise la fonction d'agrégation Concat() avec le séparateur '|'.
  • Pour ne pas avoir de problème avec le WildMatch avec des noms de sonde se retrouvant dans un autre nom de sonde, comme par exemple 'Factures' et 'Factures liquidées', je rajoute un '|' avant et après ma sélection concaténée et je recherche '*|NomDeLaSonde|*'
  • Pas besoin de if

Note: Pour mail tu n'a pas mis Sum() dans ton expression, c'est donc Only() qui est utilisé et vu qu'il y a plusieurs valeurs par jour, rien ne s'affiche.

Not applicable
Author

Merci beaucoup, ça fonctionne parfaitement.

Je suis d'accord, le modèle de données est très mauvais mais je n'ai pas le choix.

Merci encore