|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Bonjour,
Je souhaite présenter des données sous la forme d'un graphique à barres empilées (direction: horizontal) mais je butte sur un problème de tri des données. Par exemple, je souhaite présenter le nombre de clients par région d'habitation et par type de clients (cf. pièce jointe chart_BIRT pour modèle). En abscisses on a le nombre de navires et en ordonnées les régions. Chaque barre de l'empilement représente le nombre de clients par type de client et par région. Mon problème est le suivant : comment procéder pour trier les résultats sur le nombre total de clients par région ? La pièce jointe (chart_BIRT) montre le résultat obtenu à partir de birt. On peut constater que les régions sont affichées dans un ordre définie par BIRT. Ce que je voudrais c'est que la ligne du bas arrive en haut car c'est celle dont le nombre total de clients est le plus important. La pièce jointe "chart_BIRT2" montre la configuration du graphique dans l'éditeur. |
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 173 ![]() |
Si j'ai bien compris, tu dois changer ton regroupement dans la case 'Regroupement de séries verticales falcutatif'.. au lieu de row["CLIENT_TYPE"], met ta fonction qui permet d'avoir le nombre total de client (row["NB_CLIENTS"]+row["NB_CLIENTS_2"]+...).
|
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Voici le rendu espéré :
![]() Et voici ce que j'obtiens avec BIRT : ![]() ![]() Si vous avez une solution je suis preneur. |
|
|
00
|
|
|
#4 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Bonjour,
En fait, tu fais un regroupement par type de bateau. Or tu veux juste un tri par nombre de bateau total. Essaye le regroupement sur row["NB_NAVIRES_TOT"] en décroissant. |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Ça na pas l'air de fonctionner
Ce que je veux effectivement pouvoir faire c'est trier les valeurs des différents axes sur des champs non affichés. Dans cette exemple, j'affiche le nombre de navires par rayon d'action et par port de pêche. Je veux afficher les navires en fonction du nombre total de navires. Autre chose, je souhaite pouvoir ordonner les barres de regroupements par rayon d'action dans l'ordre suivant : côtier, mixte et large. Pour cela, j'ai créer un pseudo code d'ordre (row["GRA_RAYON"]). Le seul moyen que j'ai trouvé est de concaténer la valeur de ce numéro d'ordre avec le libellé du rayon d'action. Seulement le problème survient lorsque j'ai plus de 10 rayon d'action. Dans ce cas le numéro 11 se trouvera avant le numéro 2. |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Voici le résultat obtenue avec le regroupement par nombre total de navires :
![]() On a effectivement le bon tri des ports de pêche mais hélas, on n'a pas l'empilement des barres |
|
|
00
|
|
|
#7 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Ah mince ca fait longtemps que je n'ai pas manipulé les charts.
... Installation de BIRT ... En effet... L'éventuelle solution serait de faire un sort dans la requête elle-même, oui oui, celle ou on récupère les données. C'est moche mais bon... |
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Je n'ai pas compris ta réponse
Est-ce que BIRT offre la possibilité de trier les valeurs des différents axes (regroupements y compris) sur des champs de la requête non affichés ? apparemment NON. Pourquoi BIRT ne propose pas la possibilité d'afficher les résultats du graphique en conservant l'ordre défini dans la requête ? |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 175 ![]() |
Ce que veut dire BiM c'est que tu devrais même dans ta source Data sets faire une requête du genre SELECT * FROM TATABLE order by NB_NAVIRES.
OK! |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 175 ![]() |
En fait essayez d'ajouter à ta source dse-s001 "SELECT .....order by NB_NAVIRES"
|
|
|
00
|
|
|
#11 | ||
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
C'est déjà ce que j'ai fait. Seulement à cause du regroupement par rayon d'action (côtier, mixte, large), BIRT désordonne mon tri.
Voici ma requête : Code :
|
||
|
|
00
|
|
|
#12 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Alors rajoute un GROUP BY également dans ta requête
Comme ca, ce sera déjà trié par groupe. |
|
|
00
|
|
|
#13 |
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Quel est l'intérêt d'ajouter un clause GROUP BY au sein de ma requête si j'ai déjà le résultat escompté avec une clause ORDER BY ?
En effet, ma requête renverra les mêmes résultats avec un GROUP BY ou avec un ORDER BY. Le problème est que BIRT ne propose pas de solution permettant d'afficher dans les graphiques les résultats tels qu'ils sont retournés par la requête SQL lorsque l'on ajoute un regroupement au sein du graphique. ![]() Ce screenshot montre l'interface de saisie que propose BIRT. Ce qu'il me faudrait, c'est pouvoir trier la série horizontale de catégories (row["LIEU_LIB"]) par nombre total de navires (row["NB_NAVIRES_TOT"]). Cela BIRT ne le permet pas ! De même, j'ai besoin d'afficher les rayons d'actions dans l'ordre suivant : Côtier, Mixte et Large. BIRT propose uniquement de trier sur le champ qui est affiché. Moi je voudrais afficher le champ row["GRA_LIB"] (libellé du rayon d'action) et trier ces libellés par un numéro d'ordre bien spécifique (row["GRA_RAYON"]). |
|
|
00
|
|
|
#14 |
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
J'ai essayé d'enlever le tri sur le regroupement dans le code XML du rapport :
Voici ce que cela donne : ![]() Le tri des axes est respecté mais hélas la coloration et la légende semble indiquer que le regroupement n'a pas eu lieu ...
|
|
|
00
|
|
|
#15 | ||
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
J'ai trouvé une solution intermédiaire qui fonctionne. J'ai du ajouter un numéro d'ordre dans le libellé des lieux dans ma requête SQL.
Voici le résultat : ![]() Et voici le bout de code SQL : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com