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

BIRT Discussion :

[2.6.1][Designer] Tableaux et tableaux croisés à niveaux paramétrables


Sujet :

BIRT

  1. #1
    Membre averti

    Inscrit en
    Avril 2010
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 178
    Points : 418
    Points
    418
    Par défaut [2.6.1][Designer] Tableaux et tableaux croisés à niveaux paramétrables
    Bonjour. J'ai un problème TRES ardu sur lequel je travaille depuis deux semaines.

    Je cherche à réaliser un tableau au principe simple : plusieurs niveaux imbriqués (dans mon cas, 5, dans le cas général, une infinité), et des agrégations calculées sur chaque niveau (je n'utilise pas le niveau de détail).
    L'objectif, c'est que ce tableau soit paramétrable pour que l'utilisateur puisse choisir d'afficher ou non chaque niveau. Difficulté supplémentaire : les valeurs doivent être triées au sein des niveaux affichés (selon un critère sur l'une des agrégations), ce qui interdit de faire un simple tableau avec des critères de visibilité sur les colonnes, car si on cache le niveau supérieur, les données affichées seront quand même triées au sein des ruptures (masquées) relatives à ce niveau.

    Un exemple :
    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
    24
    25
    26
    niveau 1  |niveau 2  |niveau 3  |valeur
    ----------|----------|----------|----------
    fruit     |pomme     |golden    |10
              |          |gala      |3
              |          |----------|----------
              |          |t. pomme  |13
              |----------|----------|----------
              |poire     |commis    |5
              |          |williams  |2
              |          |----------|----------
              |          |t. poire  |7
              |----------|----------|----------
              |t. fruit             |20
    ----------|----------|----------|----------
    légume    |chou      |normal    |8
              |          |super     |4
              |          |----------|----------
              |          |t. chou   |12
              |----------|----------|----------
              |poireau   |blanc     |5
              |          |rouge     |1
              |          |----------|----------
              |          |t. poireau|6
              |----------|----------|----------
              |t. légume            |18
    ----------|----------|----------|----------
    Le tableau ci-dessus possède trois niveaux de rupture ; les différents niveaux sont triés par valeur décroissante. Maintenant, si on masque le niveau 2, avec un tableau classique, on obtiendrait :
    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
    niveau 1  |niveau 3  |valeur
    ----------|----------|----------
    fruit     |golden    |10
              |gala      |3
              |commis    |5
              |williams  |2
              |----------|----------
              |t. fruit  |20
    ----------|----------|----------
    légume    |normal    |8
              |super     |4
              |blanc     |5
              |rouge     |1
              |----------|----------
              |t. légume |18
    ----------|----------|----------
    Ici, les types de niveau 3 ne sont pas triés selon leur valeur car ils restent triés selon les catégories de niveau 2. La cible à obtenir est :
    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
    niveau 1  |niveau 3  |valeur
    ----------|----------|----------
    fruit     |golden    |10
              |commis    |5
              |gala      |3
              |williams  |2
              |----------|----------
              |t. fruit  |20
    ----------|----------|----------
    légume    |normal    |8
              |blanc     |5
              |super     |4
              |rouge     |1
              |----------|----------
              |t. légume |18
    ----------|----------|----------
    Vous pouvez voir que les pommes doivent être mélangées avec les poires, les choux avec les poireaux.

    Déjà, quelque soit la solution adoptée (tableau ou tableau croisé), je ne vois pas comment ne pas dupliquer les éléments selon l'affichage que je veux (pour les tableaux, à cause de ce tri invisible inévitable ; pour les tableaux croisés, parce que je ne connais aucun moyen de masquer un niveau). Donc à l'heure actuelle je suis obligé d'avoir 2^5 = 32 éléments (tableau ou tableau croisé) dans mon état, ce qui est très mauvais.

    Même en acceptant cela, j'ai bien plusieurs solutions possibles, mais chacune a au moins un inconvénient majeur :
    • Les tableaux : les propriétés "drop" permettant l'affichage des catégories une fois par rupture et non une fois par ligne, buggent dès qu'un saut de page se place au sein de la zone d'un drop ; les lignes suivantes seront mal affichées (en général, la cellule en dessous de la cellule droppée est effacée, celles à sa droite sont décalées vers la gauche).
    • Les tableaux croisés : je suis incapable d'utiliser une agrégation définie sur un niveau qui n'est pas affiché dans le tableau. C'est très mauvais, car l'une de mes agrégations est une moyenne d'une valeur sur mon niveau le plus bas, qu'il soit affiché ou non. C'est possible avec les tableaux normaux, pas avec les tableaux croisés.


    Pour la solution des tableaux, j'ai commencé à mettre en place un palliatif à base de javascript, simulant le drop sans l'utiliser. J'ai encore des problèmes. J'ai commencé cette discussion sur le forum de birt-exchange à cette adresse. Vous trouverez notamment un état d'exemple ou je mets des exemples des différentes possibilités.

    Pour la solution des tableaux croisés, je cherche actuellement à définir une agrégation utilisable à tous les niveaux, même quand le niveau concerné n'est pas affiché. Je cherche toujours un moyen de masquer un niveau.

    Merci de votre aide et désolé pour le mal de tête probable que ça va vous coûter.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Points : 1 353
    Points
    1 353
    Par défaut Choix
    Votre besoin ressemble beaucoup à transformer le Viewer BIRT en Analyseur OLAP sur le Crosstab ( choix de dimensions , filtres, drills etc. )

    Ceci existe déjà dans la version commerciale de BIRT : il s'appelle BIRT Data Analyzer.

    C'est possible de le faire par vous même mais le développement implique des connaissances TRES AVANCÉES de DE API et un tas de jours homme de dév.

    De plus , pour un volume de données plus conséquent dans le Cube derrière le rapport en question , ca va ramer grave. Actuate a introduit un modèle de load in-memory des Cubes BIRT afin de palier à ce genre de problème.

    Lien vers la chose :

    http://www.actuate.com/products/birt...rticleid=20375

    Demo : [ame]http://www.youtube.com/watch?v=RecSOmN34Sc[/ame]

  3. #3
    Membre averti

    Inscrit en
    Avril 2010
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 178
    Points : 418
    Points
    418
    Par défaut
    Merci pour la réponse,

    Je ne dispose pour l'instant d'aucun fond pour financer ce coût. Je vais continuer seul.

    Si quelqu'un a quelques conseils à prodiguer, je suis tout ouïe. Si je parviens à quelque chose, je posterai les résultats ici.

  4. #4
    Membre averti

    Inscrit en
    Avril 2010
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 178
    Points : 418
    Points
    418
    Par défaut
    Bonjour,

    J'apporte mes conclusions actuelles sur ce sujet : je n'ai pu obtenir aucune réponse à propos d'aucune méthode. J'ai eu la chance de pouvoir m'en sortir avec des tableaux croisés, car j'ai pu exprimer mes données à partir des niveaux actuellement affichés ; mais au final, toutes les interrogations ci-dessus restent valables.

Discussions similaires

  1. [XL-2010] Tableaux et Graphiques croisés dynamiques
    Par Françoise02 dans le forum Excel
    Réponses: 1
    Dernier message: 12/12/2013, 16h14
  2. Génerer des Tableaux et graphiques croisés en VB
    Par raulily dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 09/07/2013, 16h49
  3. Etat BIRT - exemple de tableaux simples et croisés imbriqués V2
    Par nicolas.1.vives dans le forum Téléchargez
    Réponses: 0
    Dernier message: 11/01/2011, 17h36
  4. Etat BIRT - exemple de tableaux simples et croisés imbriqués
    Par nicolas.1.vives dans le forum Téléchargez
    Réponses: 0
    Dernier message: 11/01/2011, 16h55
  5. Tableaux et graphiques croisés dynamiques
    Par The_Super_Steph dans le forum Access
    Réponses: 2
    Dernier message: 05/06/2007, 16h05

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