|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : avril 2008 Messages : 30 ![]() |
Bonjour,
J'ai un petit problème et je ne vois pas comment le résoudre. J'ai deux sources de données. une du type : semaine libelle data 2011-01 m1 150 2011-01 m2 450 2011-01 m3 156 2011-02 m1 650 2011-02 m2 950 2011-02 m3 756 et une autre du type : semaine m1 m2 m3 2011-01 10 50 60 2011-02 80 90 40 Et voila le résultat que j'aimerais produire : 2011-01 2011-02 m1 150 10 650 80 m2 450 50 950 90 m3 156 60 756 40 Est-ce possible, ou dois-je faire de la préparation de donnée avant de les fournir à BIRT ? Merci de votre aide. |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Consultant en Business Intelligence Inscription : mai 2009 Messages : 186 ![]() |
Salut,
Le problème revient par exemple à transformer les colonnes de la 2ème source de données en lignes, puis à faire un joined dataset entre les 2 sources. Evidemment c'est la transformation des colonnes en lignes qui va poser problème. Avec BIRT on est rarement à court de solutions, c'est possible de le faire directement dans le rapport mais c'est loin d'être simple. Maintenant est-ce souhaitable par rapport à faire une préparation des données en amont, je n'en suis pas certain car un outil comme kettle te fait ça en moins de temps qu'il n'en faut pour le dire et de manière très maintenable, avec en prime la jointure avec la première source. Mais il n'y a pas de réponse toute faite à cette question, à toi de juger en fonction du contexte, de la volumétrie, des perfs etc. Donc l'idée est de créer en dur un dataset scripté contenant 12 lignes et une seule colonne "mois":{m1, m2,....,m12}. Il faut ensuite créer un "joined dataset" en jointure externe entre ce nouveau dataset et celui de la source de données des mois en colonnes. Cela aura pour effet de multiplier par 12 le nombres de lignes de ce dataset. Il reste ensuite à créer un champs calculé "data" dans le joined dataset obtenu, en pseudo code ça donne: if (mois=m1) {m1} else if (mois=m2){m2} ... else if (mois=m12){m12} et enfin, créer un filtre de dataset pour exclure les lignes où ce champs calculé est null. Le dataset flambant neuf obtenu peut lui même être joint à la première source, et on se retrouve donc ensuite dans un cas "standard". Par ailleurs comme dans ton exemple le tableau croisé ne semble pas sommer les valeurs des deux sources de données il te faudra sans doute créer un champs calculé permettant de les distinguer avant de les joindre. Mais je ne veux pas te gâcher le plaisir je te laisse découvrir tout cela par toi même A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com