Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
antoinez
Contributor III
Contributor III

Tri par expression - Tableau croisé - Fonction Rank( )- Aggr()

Bonjour,

J'essaie de trier un tableau croisé dynamique en utilisant la fonction Rank d'une agrégation.

En pièce jointe,  une image qui démontre que ma fonction Rank semble fonctionner.

Pour tester, j'ai créé un simple tableau (à gauche) dans lequel j'ai mis dans la première colonne ma fonction : 

=rank(aggr(Sum(RatioFleet),PilierFleet, Vehicule))

et dans les valeurs (4 ème colonne), j'ai mis : =aggr(Sum(RatioFleet),PilierFleet, Vehicule).

Là ça fonctionne, mes véhicules sont bien triés en fonction du résultat de mon calcul.

Lorsque, dans mon tableau croisé (à droite), je choisi l'option : tri par expression pour le paramètre "Vehicule" et que je met : 

=rank(aggr(Sum(RatioFleet),PilierFleet, Vehicule))

ça ne fonctionne pas 😕

On voit par exemple que le véhicule 1FTW877 qui n'a qu'une valeur de 6 est placé en haut de la liste ?

Alors que dans le simple tableau (à gauche), il est à la bonne place (place 22).

Peut-être manque-t-il un "Total" quelque part ?

D'avance merci.

Antoine,

nb : dans mon tcd, la mesure est sum(RatioFleet)

 

Screenshot - 25-08-19 , 16_54_11.png

 



 

Labels (2)
1 Solution

Accepted Solutions
brunobertels
Master
Master

Bonjour 

 

Au final ajouter en dimension calculée pour Vehicule cette expression 

=dual( Vehicule, aggr( rank( total sum(RatioFleet),4,1),PilierFleet,Vehicule))

Cordialement, 

Bruno 

View solution in original post

9 Replies
brunobertels
Master
Master

Hello

Dans ton tcd tu as en colonne une dimension fleetanneemois. Dans ton tableau simple cette dimension n'est pas présente. 

Dans ton formule AGGR ajoute ta dimension fleetanneemois.

 

=aggr(Sum(RatioFleet),PilierFleet, Vehicule,FleetAnneeMois)

Et pour classer 

Rank(aggr(Sum(RatioFleet),PilierFleet, Vehicule,FleetAnneeMois))

Bruno

antoinez
Contributor III
Contributor III
Author

Merci Bruno pour ta réponse.

Mon but n'est pas de créer un tableau simple mais d'ajouter l'expression qui me permettra de trier les véhicules  dans le tcd.

Je n'ai pas mis  "FleetAnneeMois"  dans le tableau simple car mon but est d'avoir la valeur total.

D'ailleurs la valeur qui m'intéresse dans le tcd est le total du champ "FleetAnneeMois".

Si tu as une autre idée, ça m'intéresse merci.

Antoine,

 

antoinez
Contributor III
Contributor III
Author

 

En complément de ma réponse d'hier, j'ajoute que j'ai aussi essayé avec l'expression de tri : 

=sum(TOTAL <PilierFleet, Vehicule> RatioFleet)

Etant donné que mon but est de classer par total des valeurs (donc total de tous les FleetAnneeMois) par PilierFleet et ce pour chaque véhicule, je pensais que ça fonctionnerait mais ça ne donne pas de meilleurs résultats.

D'avance merci pour votre aide.

Antoine,

 

antoinez
Contributor III
Contributor III
Author

Bonjour Bruno,

Merci pour ta nouvelle proposition : 

J'ai mis l'expression de tri : aggr(rank(sum(RatioFleet)),PillierFleet,Vehicule)

Mais ça ne fonctionne toujours pas.

Screenshot - 29-08-19 , 17_13_40.png

 

Une autre idée ?

Merci d'avance.

brunobertels
Master
Master

Bonjour 

Il doit nous manquer un total quelque part :

essaye ceci 

aggr(total rank(sum( RatioFleet)),PillierFleet,Vehicule)

aggr(total rank(sum( RatioFleet)),Vehicule)

antoinez
Contributor III
Contributor III
Author

Merci mais ... aucune des 2 propositions ne fonctionne 😭

 

Screenshot - 30-08-19 , 13_45_35.png

brunobertels
Master
Master

Zut désolé 😞

est ce aque tu peux partager ton application ou du moins une partie en réduisant l'échantillon 

ou uploader un fichier excel avec quelques données ? 

Cordialement, 

Bruno 

antoinez
Contributor III
Contributor III
Author

Bonjour,

J'ai créé une petite app.

Y a t il un moyen de te l'envoyer sans la poster sur le forum (question de confidentialité des infos ?)

D'avance merci.

Bien à toi,

Antoine,

brunobertels
Master
Master

Bonjour 

 

Au final ajouter en dimension calculée pour Vehicule cette expression 

=dual( Vehicule, aggr( rank( total sum(RatioFleet),4,1),PilierFleet,Vehicule))

Cordialement, 

Bruno