Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/09/2007, 09h51   #1
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2005
Messages : 162
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2005
Messages : 162
Points : 203
Points : 203
Par défaut [2.2.0][Designer] Moyenne pondérée dans un "cross tab"

Bonjour,
Je souhaite faire un rapport contenant un tableau croisé. Ce tableau comportera trois mesures : montants, quantités et totaux.
Je veux que pour les totaux et les quantités la valeur affichée soit la somme des lignes correspondantes (jusqu'ici pas de problème) et que pour les montants ce soit la moyenne des montants pondérée par les quantités... et c'est là qu'arrivent les ennuis.
Si j'ai comme données :
Code :
1
2
3
quantité    montant     total
10          10          100
20          25          500
Je veux obtenir dans mon tableau croisé :
Code :
1
2
quantité    montant     total
30          20          600
J'ai donc essayé de définir ma mesure comme étant :
Code :
dataSetRow["total"]/dataSetRow["quantite"]
avec comme fonction d'aggrégation la somme mais cela n'est pas satisfaisant car j'obtiens :
Code :
1
2
quantité    montant     total
30          35          600
En fait, il me fait alors que je voudrais
Code :
sum(total)/sum(quantite)
J'ai également essayé de diviser les mesures quantité et total entre elles (ce qui revient à diviser les données aggrégées mais j'obtiens une erreur comme quoi BIRT n'a pas pu créer le cube : pas totalement illogique car cela revient à lui dire d'utiliser le cube pour construire le cube).
Avez-vous une idée sur la manière de procéder pour obtenir le résultat souhaité ?
En vous remerciant par avance et en espérant avoir été clair (n'hésitez pas à me demander plus de détails).

EDIT : J'ai trouvé un début de solution
Code :
data["total"]/data["quantite"]
dans un dynamic text mais ça a l'inconvénient de ne pas pouvoir se positionner "correctement". En effet, cela va faire une présentation du genre :
Code :
1
2
3
4
5
________________
|montant |.....|
|--------|total|
|quantité|.....|
----------------
alors que je souhaiterais tout aligner donc [montant|quantité|total] (qui a dit que j'étais chi*** ? )
giragu03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2007, 17h40   #2
Futur Membre du Club
 
Homme Lotfi BELLILI
Développeur .NET
Inscription : septembre 2006
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Lotfi BELLILI
Localisation : Canada

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : septembre 2006
Messages : 33
Points : 16
Points : 16
Bonjour
je pense,
tu crée un agrega pour chaque attribut a part dans ton cross tab.
ensuite, tu utilse un data à partir de palette, et dans son edit data binding tu aura une experession de la forme.

data["total_Group1/total"]/data["quantite_Group2/quantite"]



Citation:
Envoyé par giragu03 Voir le message
Bonjour,
Je souhaite faire un rapport contenant un tableau croisé. Ce tableau comportera trois mesures : montants, quantités et totaux.
Je veux que pour les totaux et les quantités la valeur affichée soit la somme des lignes correspondantes (jusqu'ici pas de problème) et que pour les montants ce soit la moyenne des montants pondérée par les quantités... et c'est là qu'arrivent les ennuis.
Si j'ai comme données :
Code :
1
2
3
quantité    montant     total
10          10          100
20          25          500
Je veux obtenir dans mon tableau croisé :
Code :
1
2
quantité    montant     total
30          20          600
J'ai donc essayé de définir ma mesure comme étant :
Code :
dataSetRow["total"]/dataSetRow["quantite"]
avec comme fonction d'aggrégation la somme mais cela n'est pas satisfaisant car j'obtiens :
Code :
1
2
quantité    montant     total
30          35          600
En fait, il me fait alors que je voudrais
Code :
sum(total)/sum(quantite)
J'ai également essayé de diviser les mesures quantité et total entre elles (ce qui revient à diviser les données aggrégées mais j'obtiens une erreur comme quoi BIRT n'a pas pu créer le cube : pas totalement illogique car cela revient à lui dire d'utiliser le cube pour construire le cube).
Avez-vous une idée sur la manière de procéder pour obtenir le résultat souhaité ?
En vous remerciant par avance et en espérant avoir été clair (n'hésitez pas à me demander plus de détails).

EDIT : J'ai trouvé un début de solution
Code :
data["total"]/data["quantite"]
dans un dynamic text mais ça a l'inconvénient de ne pas pouvoir se positionner "correctement". En effet, cela va faire une présentation du genre :
Code :
1
2
3
4
5
________________
|montant |.....|
|--------|total|
|quantité|.....|
----------------
alors que je souhaiterais tout aligner donc [montant|quantité|total] (qui a dit que j'étais chi*** ? )
lotfilol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 08h25   #3
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2005
Messages : 162
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2005
Messages : 162
Points : 203
Points : 203
Bonjour,
Je te remercie pour ta réponse mais pourrais-tu m'éclairer un petit plus car je n'arrive pas à faire ce que tu me dis.
J'essaie de créer une aggregation pour mes attributs dans mon cross-tab mais cela ne marche pas.
D'autre part, si j'ajoute un data qui n'est pas créé à partir de mon cube, j'obtiens la présentation
Code :
1
2
3
4
5
________________
|montant |.....|
|--------|total|
|quantité|.....|
----------------
Je continue à chercher de mon côté et je vous tiens au courant.
EDIT : Je me suis inspiré de ta technique (enfin si j'ai bien compris ce que tu suggérais): j'ai créé une mesure "bidon" pour les montants (avec une méthode de calcul bidon), j'insère cette mesure dans le tableau et au final je remplace la expression (measure["montant"]) par data["total"]/data["quantite"]
C'est de la bidouille donc si quelqu'un a mieux, je suis preneur.
Merci pour ton aide lotfilol
giragu03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h14.


 
 
 
 
Partenaires

Hébergement Web