IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

QlikView Discussion :

Trier une dimension calculée


Sujet :

QlikView

  1. #1
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut Trier une dimension calculée
    Bonjour,

    Dans un graphique en histogramme je présente une analyse par tranche, ces tranches sont construites avec une dimension calculé comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    aggr(
    if(count(DISTINCT IdProjet)=0 ,'aucun',
    if(count(DISTINCT IdProjet)>0 and count(DISTINCT IdProjet)<=2,'1 à 2',
    if(count(DISTINCT IdProjet)>3 and count(DISTINCT IdProjet)<=5,'3 à 5',
    if(count(DISTINCT IdProjet)>5 and count(DISTINCT IdProjet)<=10,'6 à 10',))))))))
    ,IdDossier)
    Cela fonctionne très bien, mais comment faire pour classer mes tranches d’après un ordre « logique » ?
    En calculant ce champ directement dans le script j’aurai pu créer un Identifiant pour chaque tranches et m’en servir pour trier ma dimension. Mais le problème du script c’est que je me retrouve avec des tranches statiques, j’ai besoins quelles s’ajustent en fonction de mes sélections donc il faut forcément passer par une dimension calculé.

    Une idée ?

  2. #2
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Quelle est l'expression du graph ?


    Il me semble que si on met dans l'onlet "Tri" un tri selon l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(DISTINCT IdProjet)
    cela donne le résultat attendu...



    ps : pourquoi ne mettez vous pas vos conditions dans l'autre sens, pour éviter de devoir mettre 2 tests à chaque "IF" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    =aggr(
    IF(count(DISTINCT IdProjet)>=6, '6+',
    	IF(count(DISTINCT IdProjet)>=3, '3 à 5',
    		IF(count(DISTINCT IdProjet)>0, '1 à 2',
    			'aucun'
    		)
    	)
    )
    ,IdDossier)
    Etre obligé de mettre 2 tests est le meilleur moyen pour introduire des erreurs. La preuve : un dossier qui a 3 projets ne sera pas compté dans votre expression (car vous avez mis ">3").

  3. #3
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    L’expression de mon graph est un simple count(distinct IdProjet)

    En la plaçant dans le « tri selon l’expression » mes tranches vont se classer en fonction du nombre de projet quelles remontent.
    Mais moi j’ai besoin de classer ma dimension dans cet ordre la :
    'aucun', '1 à 2', '3 à 5', '6 à 10' etc, sans tenir compte du nombre de projets.


    ps : pourquoi ne mettez vous pas vos conditions dans l'autre sens, pour éviter de devoir mettre 2 tests à chaque "IF" ?
    Effectivement c’est une mauvaise habitude que j’ai, bien vu pour « >3 » rien n’échappe à PhunkyBob !

  4. #4
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Davidb_ Voir le message
    En la plaçant dans le « tri selon l’expression » mes tranches vont se classer en fonction du nombre de projet quelles remontent.
    Mais moi j’ai besoin de classer ma dimension dans cet ordre la :
    'aucun', '1 à 2', '3 à 5', '6 à 10' etc, sans tenir compte du nombre de projets.
    Justement, dans le test que j'avais fait, ça fonctionnait, car justement, le tri par nombre de projet donne le tri correct :
    'aucun' --> quand il y a 0 projet
    '1 à 2' --> quand il y a 1 à 2 projets
    etc...

    le tri par nombre de projets correspond bien.


    Peut-être pouvez-vous donner un échantillon de données (LOAD INLINE) ?

  5. #5
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    A pardon, je suis parti sur des projets et des dossiers pour présenter une problématique simple mais j’ai donné un mauvais exemple…

    En réalité en expression il faudrait plutôt compter le nombre de responsables.

  6. #6
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    Voilà un échantillon de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     LOAD * INLINE [
        IdProjet, IdResponsable
        1, 1
        2, 1
        3, 1
        4, 2
        5, 2
        6, 2
        7, 4
        8, 5
        9, 5
        10, 5
        11, 6
        12, 7
        13, 7
        14, 7
        15, 7
        16, 8
        17, 8
        18, 8
        19, 8
        20, 8
    ];
    La dimension :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    =aggr(
    IF(count(DISTINCT IdProjet)>=5, '5 et +',
    	IF(count(DISTINCT IdProjet)>=3, '3 à 4',
    		IF(count(DISTINCT IdProjet)>0, '1 à 2',
    			'aucun'
    		)
    	)
    )
    ,IdResponsable)
    L’expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    count( DISTINCT IdResponsable)
    Je veux pouvoir classer mes dimensions dans cet ordre : 1 à 2, 3 à 4 , 5 et +

  7. #7
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Vous voulez trier par nombre de projets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(DISTINCT IdProjet)
    Le problème, c'est qu'il y a un regroupement par responsable dans votre dimension, donc il faut aussi en tenir compte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aggr(count(DISTINCT IdProjet), IdResponsable)
    Sauf que pour chaque tranche, il y a plusieurs valeurs possibles (par exemple, pour la tranche "3 à 4", il y a le COUNT qui retourne "3" et le COUNT qui retourne "4").

    Il faut donc en choisir une seule (je choisis la MAX, mais ça fait pareil avec la MIN).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    max(aggr(count(DISTINCT IdProjet), IdResponsable))
    Pour chaque tranche, il prendra donc la plus grosse valeur du COUNT de projets.

    "1 à 2" --> "2"
    "3 à 4" --> "4"
    "5 et +" --> "5"

    et fera le tri selon ces valeurs.

  8. #8
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    C'est parfait merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Count dans une dimension calculée ?
    Par clem9 dans le forum QlikView
    Réponses: 2
    Dernier message: 11/09/2012, 12h00
  2. Réponses: 2
    Dernier message: 08/07/2008, 11h28
  3. Trier une liste à 2 dimensions
    Par betty4492 dans le forum Général Python
    Réponses: 7
    Dernier message: 15/02/2007, 15h07
  4. trier un champ calculé dans une dbgrid
    Par blackbird_dream dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/06/2006, 14h47
  5. trier un etat en fonction d'une zone calculée
    Par petitours dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo