Pregunta

Una pregunta novato que no pude encontrar una respuesta a.

Tengo un informe que contiene una tabla que contiene varios elementos que tienen una columna "Time". Me gustaría agrupar los elementos por el tiempo de manera que todos los elementos del mismo mes se agruparán juntos.

Para ello tengo que extraer el mes / año fuera de la cadena "Time" (el formato es "17:22 19/07/09") y el uso que para la agrupación. Yo sé cómo hacer todo esto en Java y creo BIRT ofrece varias maneras de hacer esto, pero yo no pude encontrar una manera fácil de hacer esto.

Si hay un buen tutorial sobre este me gustaría comprobarlo.

Gracias !!

¿Fue útil?

Solución

Lo hemos hecho de la siguiente manera. En nuestra consulta SQL para el conjunto de datos, seleccionamos ambos (por ejemplo) y "char(my_date,iso)" "left(char(date,iso),7)" (por 2009-01-05 y 2009-01 respectivamente), algo como:

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

A continuación, cuando se crea la tabla en el informe, la columna 1 debe ser la columna de agrupamiento basado en isoyyyymm y dejar en blanco para esa columna en la tabla:

  • el título,
  • la línea de datos de grupo; y
  • la línea de detalle de datos.

Así que terminan con, en el diseñador:

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

La tabla de informe seguirá siendo el grupo en el mes, pero las líneas de detalle muestran va a contener toda la fecha 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

puede grupo de intervalos si quiere hacerlo de esa manera, sino que ha optado por la solución más sencilla para aquellas situaciones en las que podemos utilizar cadenas simples. Obviamente, si el intervalo es de una semana (o alguna otra cosa, no susceptibles de análisis de cadena sencilla), tendrá que utilizar el intervalo agrupación integrada en BIRT.

El mejor tutorial para esto (en mi opinión), está en la página 187 (en el capítulo 12) de BIRT, guía del campo a informes . Eso, y Integración y Extensión de BIRT son imprescindibles para cualquier usuario BIRT grave .

Esta primera es absolutamente vital para cualquier diseñador de informes. El segundo abarca temas mucho más avanzados, tales como Java y Javascript incrustado, el modelo de objeto de informe y de la arquitectura subyacente de BIRT. Esto es necesario si desea que sus informes sean realmente espectacular.

Otros consejos

¿Tiene los parámetros del informe poco aquí, que incluye ayuda en el análisis de fecha y hora que usted?

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

Tengo un informe de muestra en la Bolsa DevShare BIRT que hace esta cosa exacta. Usted provee una expresión regular (como simples o complejos como sea necesario) y se usará el partido de la expresión regular para crear grupos.

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

Buena suerte!

Esto se puede hacer con el ambiente de grupo en la propia tabla. Cómo crear grupos se describen en http://www.eclipse.org /birt/phoenix/tutorial/basic/basic06.php (por cierto., en busca de 'Birt grupo de la tabla' en Google gices esto como el primer hit). En este caso, puede hacerlo así:

  • Haga clic en el encabezado de fila para el encabezado de grupo Estado y un menú contextual se mostrará.
  • En el menú contextual, seleccione Insertar Grupo → continuación. El cuadro de diálogo Detalles del grupo aparece.
  • Elija la columna "Tiempo" en el Grupo de En el campo y el tipo de tiempo en el Nombre ámbito.
  • Seleccione 'meses' en el intervalo combobox
  • Haga clic en OK.

Esto crea una tabla con grupos sin ningún tipo SQL o JS tocar el violín.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top