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

fixer une valeur texte dans un graphique

Bonjour

Mes dimensions :

Jour

Evenement

Expression : (heurefin-heuredébut)

je représente dans un graphique empilé les heures travaillées des machines. je souhaite fixer la valeur des machines avec un nom.

J'ai essayé avec plusieurs set analysis comme suit :

sum({<Machine={'LAV-01']>} (heurefin-heuredébut)) et plusieurs combinaison sans résultat..

Merci de votre aide sur ce point.

Francois

stacked chart.JPG

Labels (1)
1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour François,

Vu que tu n'as pas les licences, je ne t'envoie pas l'application modifiée car tu ne pourra pas l'ouvrir.

J'ai pu bloquer le graphe sur une machine, mais j'ai constaté quelques points étranges.

Ci-dessous 2 copies d'écran pour des machines différentes. Tu peux voir que le graphe de gauche (le tien) change alors que les 2 graphes de droite (ceux que j'ai bloqués) ne change pas. J'ai sélectionné un jour pour que la comparaison soit plus facile à réaliser.

Tu peux également constater que entre ton graphe et le mien, il y a quelques petites différences, je l'expliquerai plus bas.

Community_1236445_1.png

Community_1236445_2.png

Dans ton graphe, il y a quelques NumEvent qui manquent. C'est du à la façon dont les données sont triées. Dans ton graphe, tu tries les NumEvent en fonction de TrancheHD2. Et le problème se présente lorsque tu as 2 NumEvent dans la même TrancheHD2. L'ordre alors existant ne correspond pas obligatoirement à la logique des expressions de décalage et de durée.

==> Il faut trier NumEvent par: Min({$<Machine={'LAV-01'}>} HeureDébut)

Note: Utilise toujours une fonction d'agrégation, sinon c'est Only() qui est utilisé et ça peut donner des résultats inattendus dans certains cas. En plus dans le cas de tes graphes bloqués, il ne faut pas oublier de spécifier ta machine.

Voici les expressions pour bloquer tes graphes:

  • Durée
    • RangeMax(Above(Max({$<Machine={'LAV-01'}>} HeureFin),0,RowNo())) // Upper limit
      - RangeMax(
            
      Min({$<Machine={'LAV-01'}>} HeureDébut),
            
      RangeMax(Above(Max({$<Machine={'LAV-01'}>} HeureFin),1,RowNo()-1))) // Lower limit
  • Couleur d'arrière plan
    • if(Only({$<Machine={'LAV-01'}>} Programme)= 'P1 : INSTRUMENTS', RGB(154,205,40),
      if(Only({$<Machine={'LAV-01'}>} Programme)= 'P1 : LAVAGE MANUEL', RGB(238,180,34),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P2 : INSTRUMENTS COELIO', RGB(131,111,255),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P2 : LAVAGE ULTRASONS', RGB(0,238,118),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P3 : CONTAINERS', RGB(127,127,127),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P4 : PLATEAUX', RGB(255,185,252),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P5 : INSTRUMENTS NEUFS', RGB(237,145,33),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P6 : DESINFECT. THERMIQUE 15m', RGB(255,215,0),
      RGB(198,113,113)))))))))
  • Décalage de barre
    • if(IsNull(Above(Only({$<Machine={'LAV-01'}>} HeureDébut))),
             
      Min({$<Machine={'LAV-01'}>} HeureDébut),
             
      RangeMax(0,Min({$<Machine={'LAV-01'}>} HeureDébut)- RangeMax(Above(Max({$<Machine={'LAV-01'}>} HeureFin),1,RowNo()-1))))
  • Tri de NumEvent
    • Min({$<Machine={'LAV-01'}>} HeureDébut)

View solution in original post

5 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Je ne comprend pas ce que tu veux faire.

Peux-tu essayer d'expliquer autrement.

Si tu peux fournir ton application ou une copie avec un extrait des données et ton objet graphique, cela pourrait permettre de mieux t'aider sur cette question et sur l'autre que tu as posé.

Anonymous
Not applicable
Author

Bonjour Sébastien

ci joint mon application (je n'ai pas encore la version avec licence)

J'ai créé une application pour voir l'utilisation de machines.

je voudrais afficher plusieurs machines sur une même page et donc cloner puis "bloquer" mes graphiques par machine

est ce plus clair?

pour mon 2eme post, c'est sur ce même graphique que je souhaite changer les échelles des axes.

sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour François,

Vu que tu n'as pas les licences, je ne t'envoie pas l'application modifiée car tu ne pourra pas l'ouvrir.

J'ai pu bloquer le graphe sur une machine, mais j'ai constaté quelques points étranges.

Ci-dessous 2 copies d'écran pour des machines différentes. Tu peux voir que le graphe de gauche (le tien) change alors que les 2 graphes de droite (ceux que j'ai bloqués) ne change pas. J'ai sélectionné un jour pour que la comparaison soit plus facile à réaliser.

Tu peux également constater que entre ton graphe et le mien, il y a quelques petites différences, je l'expliquerai plus bas.

Community_1236445_1.png

Community_1236445_2.png

Dans ton graphe, il y a quelques NumEvent qui manquent. C'est du à la façon dont les données sont triées. Dans ton graphe, tu tries les NumEvent en fonction de TrancheHD2. Et le problème se présente lorsque tu as 2 NumEvent dans la même TrancheHD2. L'ordre alors existant ne correspond pas obligatoirement à la logique des expressions de décalage et de durée.

==> Il faut trier NumEvent par: Min({$<Machine={'LAV-01'}>} HeureDébut)

Note: Utilise toujours une fonction d'agrégation, sinon c'est Only() qui est utilisé et ça peut donner des résultats inattendus dans certains cas. En plus dans le cas de tes graphes bloqués, il ne faut pas oublier de spécifier ta machine.

Voici les expressions pour bloquer tes graphes:

  • Durée
    • RangeMax(Above(Max({$<Machine={'LAV-01'}>} HeureFin),0,RowNo())) // Upper limit
      - RangeMax(
            
      Min({$<Machine={'LAV-01'}>} HeureDébut),
            
      RangeMax(Above(Max({$<Machine={'LAV-01'}>} HeureFin),1,RowNo()-1))) // Lower limit
  • Couleur d'arrière plan
    • if(Only({$<Machine={'LAV-01'}>} Programme)= 'P1 : INSTRUMENTS', RGB(154,205,40),
      if(Only({$<Machine={'LAV-01'}>} Programme)= 'P1 : LAVAGE MANUEL', RGB(238,180,34),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P2 : INSTRUMENTS COELIO', RGB(131,111,255),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P2 : LAVAGE ULTRASONS', RGB(0,238,118),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P3 : CONTAINERS', RGB(127,127,127),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P4 : PLATEAUX', RGB(255,185,252),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P5 : INSTRUMENTS NEUFS', RGB(237,145,33),
      if(Only({$<Machine={'LAV-01'}>} Programme)='P6 : DESINFECT. THERMIQUE 15m', RGB(255,215,0),
      RGB(198,113,113)))))))))
  • Décalage de barre
    • if(IsNull(Above(Only({$<Machine={'LAV-01'}>} HeureDébut))),
             
      Min({$<Machine={'LAV-01'}>} HeureDébut),
             
      RangeMax(0,Min({$<Machine={'LAV-01'}>} HeureDébut)- RangeMax(Above(Max({$<Machine={'LAV-01'}>} HeureFin),1,RowNo()-1))))
  • Tri de NumEvent
    • Min({$<Machine={'LAV-01'}>} HeureDébut)
Anonymous
Not applicable
Author

Bonjour Sebastien

Super Génial, merci beaucoup. Je voyais bien que certaines durées n'était pas affichées mais je pensais que ça venait de mes intervalles qui n'était pas assez fin.

Pour mes NumEvent, en fait je voulais compter le nombre d'evènement par jour. . mais ça n'a pas marché, en faisant autonumber(NumEvent,HeureDebut) as evenement...

Je ne comprends pas le if(only) au lieu du 'if' tout simple que j'avais mis, est ce une bonne pratique ou est ce pour uen autre raison? j'ai regardé sur l'aide de qlik et je ne comprends pas trop l'usage à part de border complètement la condition par sécurité?

Je fais du lobbying en interne pour les licences!!!

C'est aussi grâce a hic  et sa recette pour un graphique en gantt que j'ai essayé d'appliquer..


Encore merci pour l'aide..

sfatoux72
Partner - Specialist
Partner - Specialist

Concernant l'ajout du Only :

Dès que tu utilises un champs dans une expression, il faut penser à l'associer à une fonction d'agrégation. Si ce n'est pas fait, QlikView va utiliser la fonction d'agrégation Only() par défaut, ce qui peut amener à des résultats inattendus.

La fonction d'agrégation détermine simplement le comportement a appliquer lorsqu'il y a plusieurs ligne de données.

De plus, si tu veux appliquer un set analysis, tu dois utiliser la fonction d'agrégation.