Question

Une question de débutant que je ne pouvais pas trouver une réponse à.

J'ai un rapport contenant une table contenant plusieurs éléments qui ont une colonne « Time ». Je voudrais regrouper les éléments en temps afin que tous les articles du même mois seront regroupés.

Pour ce faire, je dois extraire le mois / année sur la chaîne « Time » (format est « 17:22 19/07/09 ») et l'utiliser pour le regroupement. Je sais comment faire tout cela en Java et je pense que BIRT offre plusieurs façons de le faire, mais je ne parvenais pas à trouver un moyen facile de le faire.

S'il y a un bon tutoriel sur ce que j'aimerais vérifier.

Merci !!

Était-ce utile?

La solution

Nous l'avons fait comme suit. Dans notre requête SQL pour l'ensemble de données, nous sélectionnons les deux (par exemple) "char(my_date,iso)" et "left(char(date,iso),7)" (pour 2009-01-05 et 2009-01 respectivement), quelque chose comme:

select
    left(char(my_date,iso),7) as isoyyyymm,
    char(my_date,iso) as isodate,
    otherfield as value
from tbl
order by my_date

Ensuite, lorsque vous créez votre table dans le rapport, la colonne 1 doit être la colonne de regroupement basé sur isoyyyymm et blanc pour cette colonne dans le tableau:

  • la rubrique
  • la ligne de données de groupe; et
  • la ligne de données de détail.

Alors vous vous retrouvez avec, dans le concepteur:

+--------------------------------+-----------+-----------------+
| <Header row>                   | Date      | Value           |
+--------------------------------+-----------+-----------------+
| <Group header row (isoyyyymm)> |           |                 |
+--------------------------------+-----------+-----------------+
| <Detail row>                   | [isodate] | [value]         |
+--------------------------------+-----------+-----------------+
| <Group footer row (isoyyyymm)> |           | Total.sum(      |
|                                |           |   row["value"], |
|                                |           |   null,         |
|                                |           |  "Grp1")        |
+--------------------------------+-----------+-----------------+

Le tableau de rapport groupe encore sur le mois, mais les lignes de détail affichées seront tous contenir la date complète:

Date         Value
----------   -----

2009-01-01       7
2009-01-08       2
2009-01-15       1
2009-01-22       4
             -----
                14

2009-02-05       2
2009-02-12       0
2009-02-19       0
2009-02-26       1
             -----
                 5

pouvez regrouper sur des intervalles si vous voulez le faire de cette façon, mais nous avons opté pour l'approche la plus simple pour les situations où l'on peut utiliser des chaînes simples. De toute évidence, si votre intervalle est une semaine (ou quelque chose d'autre ne se prête pas à l'analyse de chaîne simple), vous aurez besoin d'utiliser l'intervalle regroupement intégré dans BIRT.

Le tutoriel pour ce meilleur (à mon avis), est à la page 187 (dans le chapitre 12) BIRT, A Field Guide to rapport . Cela, et Intégration et extension de BIRT sont incontournables pour tout utilisateur sérieux BIRT .

Cette première est absolument indispensable à tout concepteur de rapport. La seconde porte sur des sujets beaucoup plus avancés tels que Java et Javascript intégré, le modèle objet de rapport et l'architecture sous-jacente de BIRT. Cela est nécessaire si vous voulez que vos rapports soient vraiment spectaculaires.

Autres conseils

Est-ce que les paramètres du rapport bit ici qui comprend l'aide de l'analyse syntaxique datetime vous?

http://www.eclipse.org/birt/phoenix /deploy/viewerUsage.php#parameters

J'ai un exemple de rapport sur la BIRT échange DevShare qui fait cette chose exacte. Il vous fournir une expression régulière (comme simple ou complexe que vous avez besoin) et il utilisera le match du RegEx pour créer des groupes.

http://www.birt-exchange.org/devshare/designing-birt-reports/746-create-a-dynamic-group-by-extracting-a-substring/#description

Bonne chance!

Cela peut être fait avec le réglage du groupe dans le tableau lui-même. Comment créer des groupes est décrit dans http://www.eclipse.org /birt/phoenix/tutorial/basic/basic06.php (BTW., la recherche de 'groupe table BIRT' dans Google gices ce que le premier coup). Dans ce cas, vous pouvez le faire comme ça:

  • Faites un clic droit sur l'en-tête de ligne pour la groupe de l'État-tête et un menu contextuel sera affiché.
  • Dans le menu contextuel, choisissez Insérer → Groupe ci-dessous. La boîte de dialogue Détails du groupe apparaît.
  • a choisi la colonne « Time » dans le groupe Sur le terrain et le temps de taper le nom champ.
  • Sélectionnez « mois » dans l'intervalle combobox
  • Cliquez sur OK.

Cela crée une table groupée sans tripoter SQL ou JS.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top