Domanda

Una domanda newbie che non sono riuscito a trovare una risposta.

Ho un rapporto contenente una tabella che tiene parecchi elementi che hanno una colonna "Time". Vorrei raggruppare gli elementi per tempo in modo che tutti gli elementi dello stesso mese saranno raggruppati.

Per fare questo devo estrarre il mese / anno fuori dalla stringa "Time" (formato è "17:22 19/07/09"), e l'uso che per il raggruppamento. Io so come fare tutto questo in Java e penso BIRT offre diversi modi per fare questo, ma non riuscivo a trovare un modo semplice per fare questo.

Se c'è un buon tutorial su questo mi piacerebbe di check it out.

Grazie !!

È stato utile?

Soluzione

L'abbiamo fatto come segue. Nella nostra query SQL per il set di dati, selezioniamo entrambi (per esempio) (rispettivamente per "char(my_date,iso)" e "left(char(date,iso),7)") 2009-01-05 e 2009-01, qualcosa come:

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

Poi, quando si crea la tabella nel report, colonna 1 deve essere la colonna di raggruppamento in base a isoyyyymm ed in bianco per quella colonna della tabella:

  • l'intestazione,
  • la linea dati del gruppo; e
  • la linea di dettaglio dei dati.

Così si finisce con, nella finestra di progettazione:

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

La tabella di report sarà ancora di gruppo sul mese, ma le linee di dettaglio visualizzati saranno tutti contenere la data completa:

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

possono gruppo su intervalli, se si vuole fare in questo modo, ma abbiamo scelto per l'approccio più semplice per quelle situazioni in cui possiamo utilizzare stringhe semplici. Ovviamente, se l'intervallo è una settimana (o qualcos'altro non suscettibili di semplice analisi stringa), è necessario utilizzare l'intervallo di raggruppamento integrato in BIRT.

Il miglior tutorial per questo (a mio parere), è a pagina 187 (nel capitolo 12) di BIRT, Una guida del campo reporting. Questo, e integrazione ed estensione BIRT sono must per qualsiasi utente BIRT grave .

Questa prima è assolutamente vitale per ogni progettista di report. Il secondo si occupa di argomenti molto più avanzate, come integrato Java e Javascript, il modello a oggetti report e l'architettura sottostante di BIRT. Ciò è necessario se si desidera che i rapporti siano davvero spettacolare.

Altri suggerimenti

fa il parametri del report po 'qua che comprende datetime aiuto analisi si?

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

Ho un rapporto campione sul BIRT Borsa DevShare che fa questa cosa esatta. Si fornisce un espressione regolare (semplice o complesso come avete bisogno) e utilizzerà il match della regex per creare gruppi.

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

Buona fortuna!

Questo può essere fatto con l'impostazione del gruppo nella tabella stessa. Come creare gruppi è descritta in http://www.eclipse.org /birt/phoenix/tutorial/basic/basic06.php (btw., alla ricerca di 'gruppo tavolo birt' in Google gices questo come il primo colpo). In questo caso si può fare così:

  • tasto destro del mouse sull'intestazione della riga per la intestazione gruppo di stato e un menù contestuale sarà visualizzato.
  • Dal menu contestuale scegliere Inserisci Gruppo → Sotto. La finestra di dialogo Dettagli Gruppo appare.
  • Scegli la colonna "Time" nel gruppo Sul campo e il tipo di volta in nome campo.
  • Seleziona 'mese' nell'intervallo combobox
  • Fare clic su OK.

Questo crea una tabella raggruppata senza giocherellare SQL o JS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top