O3ReportStudio 7
O3ReportStudio 7
2
1.1 Creando un Reporte nuevo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Área de Trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Especificando los datos a utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Definiendo una Fuente de Datos (Data Source) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Definiendo un Conjunto de Datos (Data Set) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.2.1 Definiendo un Conjunto de Datos (Data Set) a partir de una vista O3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.2.2 Definiendo un Conjunto de Datos (Data Set) a partir de una vista O3 extendida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.2.3 Definiendo un Conjunto de Datos (Data Set) a través de MDX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2.3.1 Consultas MDX para reportes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.2.3.2 Desplegando la fecha de actualización de un Datamart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 Parametrizando el reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.1 Parametrización Simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.2 Parametrización en Cascada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.3 Parametrización con Fechas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.4.4 UserLogin como parámetro del reporte en ePortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.5 Diseñando la forma del reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.6 Formateando la información . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.7 Funciones de Birt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.7.1 BirtComp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.7.2 BirtMath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1.7.3 BirtStr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.8 Reporte con Número Variable de Columnas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1.9 Almacenando el reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
1.10 Envío automático de reportes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
1.11 Dando formato a las leyendas de una gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
O3 Report Studio
A partir de esta versión, Ideasoft O3 incorpora un nuevo componente para generación de reportes estáticos. Este componente está fuertemente
basado en Eclipse BIRT, que ha sido extendido para integrarse con los modelos multidimensionales de O3.
Este nuevo componente de Ideasoft O3, incluye un entorno de creación de reportes (a nivel del Desktop), un entorno de ejecución de los mismos
a nivel del Web y del Desktop. El acceso a los modelos multidimensionales desde el reporteador puede hacerse en forma simplificada mediante
referencias a vistas o utilizando el lenguaje de consultas multidimensionales MDX. O3 soporta para esto un subconjunto de las sentencias de
consulta de MDX que es un estándar de facto de la industria.
Mediante este componente, los reportes de O3 pueden generar excelentes niveles de presentación en múltiples formatos, incluyendo PDF,
HTML, MS WORD, etc., creados a partir de información proveniente de los modelos multidimensionales así como en forma directa de las bases
de datos relacionales.
Este módulo se encuentra totalmente integrado con las capacidades analíticas de O3 lo cual representa una extensión significativa de las
capacidades de O3 en cuanto a la explotación de datos.
Este Manual
El objetivo de este Manual es presentar el módulo para generación de reportes disponible desde la versión 5.0 de O3, brindando una guía
sencilla acerca de su uso con ejemplos concretos que pueden ser seguidos en una instalación cualquiera de O3.
Se recomienda además la lectura del material bibliográfico detallado en la sección de bibliografía más abajo para reportes más complejos o por
detalles específicos de la herramienta.
Esta documentación está organizada de acuerdo a los pasos necesarios para construir un reporte vistoso utilizando los datos almacenados en el
cubo de Vinos incluido en la instalación de O3.
How To O3 Report
How To O3 Report
Almacenando el reporte
Área de Trabajo
Creando un Reporte nuevo
Dando formato a las leyendas de una gráfica
Diseñando la forma del reporte
Envío automático de reportes
Especificando los datos a utilizar
Formateando la información
Funciones de Birt
Parametrizando el reporte
Reporte con Número Variable de Columnas
Bibliografía
Libro Autor
Documentación Online
Autor Link
Área de Trabajo
Esta sección describe el área de trabajo personalizable de O3 Report.
Área de Trabajo
Paleta (Palette)
Muestra los elementos que se puede utilizar en un reporte.
Editor de Propiedades
Es posible tener varios conjuntos de datos definidos sobre la misma fuente de datos
1. Seleccione la opción del menú Data->New Data Source para crear una nueva Fuente de datos
Query Type: Indica el tipo de Fuente de datos que se usará: Consulta MDX,
Vista O3 o Vista O3 Extendida.
Para el caso concreto de este tutorial se utiliza una vista sobre el cubo de vinos que se define como se muestra en la siguiente imagen
En esta vista se seleccionan las medidas Litros Vendidos y Venta Neta como columnas y en el eje vertica se colocan las dimensiones de
Vendedores y Vinos en sus respectivos niveles Vendedor y Vino.
Una vez definida la vista y almacenada en el servidor con el nombre VinosPorVendedor con alcance público se deben seguir los siguientes
pasos:
En la consulta es importante destacar la cláusula FROM de la clausulta que hace referencia a 'Vinos/VinosPorVendedor#_public'.
Este es el nombre con el que se hace referencia a la vista necesaria para este reporte.
Estos datos pueden ser sacados de la barra de estado del navegador web, luego de source=Vinos/VinosPorVendedor#_public en la
página de marcadores.
6. Presionar el botón Finish para aceptar los cambios
7. La ventana que se muestra a continuación permite modificar parámetros adicionales del Conjunto de Datos, así como obtener una Vista
Preliminar (Preview Results) de la consulta
Página en construcción
En esta vista se seleccionan las medidas Litros Vendidos y Venta Neta como columnas y en el eje vertica se colocan las dimensiones de
Vendedores y Vinos en sus respectivos niveles Vendedor y Vino.
Una vez definida la vista y almacenada en el servidor con el nombre VinosPorVendedor con alcance público se deben seguir los siguientes
pasos:
En la consulta es importante destacar el nodo <View> con e valor: 'Vinos/VinosPorVendedor#_public'. Este es el nombre con el que
se hace referencia a la vista necesaria para este reporte.
Vinos Es el nombre del cubo tal como está publicado en el servidor
Estos datos pueden ser sacados de la barra de estado del navegador web, luego de source=Vinos/VinosPorVendedor#_public en la
página de marcadores.
Explorar Hijos
<DrillChildren fromParameter="true">[Date][Date][2010]</DrillChildren>
Explorar Nivel
<DrillLevel><LevelName>Mes</LevelName></DrillLevel>
<LevelRange>
<Level>Mes</Level>
<From fromParameter="true">[Date]</From>
<To fromParameter="true">[Date]</To>
</LevelRange>
Lista de Elementos
<MemberList>
<Member> </Member>
<Member> </Member>
<Member> </Member>
<Member> </Member>
</MemberList>
Fechas Relativas
<RelativeDate>
<RelativeLevel>(Nombre dimension relativa)</RelativeLevel>
<ReferenceDate>(Fecha base en formato YYYY-MM-DD)</ReferenceDate>
</RelativeDate>
Los pasos anteriores permitieron definir un Conjunto de Datos utilizando una vista previamente almacenada en el servidor.
O3 permite un método alternativo que no requiere salvar ninguna vista, sino que por el contrario permite al diseñador del reporte indicar la
consulta directamente en el propio reporte.
Este método alternativo utiliza el lenguaje de consulta MDX, el cual permite especificar consultas multidimensionales sobre los cubos publicados
en el servidor de O3
1. Crear una nueva fuente de datos (Data Source) llamada O3 Local MDX con los siguientes parámetros
Port: 7777
Password: user
2. Crear un nuevo conjunto de datos (Data Set) llamado Ventas MDX con los siguientes parámetros
SELECT
{[Measures].[Litros Vendidos], [Measures].[Venta Neta]} ON COLUMNS
,CROSSJOIN({[Vendedores].[Vendedor].members}, {[Vinos].[Vino].members}) ON ROWS
FROM [Vinos]
La cláusula CROSSJOIN de la consulta es la que permite lograr la anidación de las dimensiones de Distribuidores y Vinos que también existía en
la Vista.
Por más detalles acerca de la sintaxis y las opciones que brinda el lenguaje MDX soportado por O3 referirse a Consultas MDX para reportes
El objetivo de este tutorial es introducir el lenguaje de consulta MDX soportado desde la versión 5.0 de O3 como lenguaje para hacer consultas
desde el reporteador.
El tutorial está organizado en base a un conjunto de casos utilizando el modelo del cubo Demo como base de consulta. Para ver un ejemplo en
forma rápida ver más abajo.
Introducción a MDX de O3
Estructura y datos del cubo Demo
Caso 1 Lista de elementos en ejes
Caso 2 Lista de elementos de un nivel en ejes
Caso 3 Filtro básico en dimensiones
Caso 4 Lista de elementos según jeraquía
Caso 5 Combinando formas de listar elementos
Caso 6 Combinación de varias dimensiones en ejes
Caso 7 Ocultar elementos en ejes
Consulta MDX de metadata
Ejemplo
SELECT
<colExpresion> ON COLUMNS,
<rowExpresion> ON ROWS
FROM <cubeName>
WHERE <filterExpresion>
Describiremos sus elementos a través de un ejemplo. Supongamos que del modelo de análisis de ventas de nombre Demo queremos consultar
las unidades vendidas en France a los clientes clasificados como Major Accounts.
SELECT
{Customers.[Major Accounts]} ON COLUMNS,
{Location.[France]} ON ROWS
FROM Demo
WHERE (Measures.[Units Sold])
El cubo conteniendo la información se indica en el FROM de la consulta. Major Acounts es un miembro del nivel de más arriba de la
dimensión Customers, por lo tanto la forma de referirse a él es mediante la expresión Customers.[Major Accounts]. En esta consulta se
ha decidido que este valor aparezca como columna en el resultado, de ahí que se declara ON COLUMNS. Análogamente, France es un
miembro del nivel más arriba de la dimensión Location. La forma de referirse a él es Location.France y para que aparezca en las filas se
especifica ON ROWS. Por último, en el WHERE de la consulta se indica la medida que se quiere utilizar. Las medidas pertenecen a una
dimensión de nombre Measures. La forma de referirse a la medida deseada en este caso es Measures.[Units Sold].
El resultado de esta consulta puede leerse: "En Francia, las unidades vendidas a los clientes clasificados como de Grandes Cuentas es 2841".
En ocasiones es necesario desplegar como parte del reporte la fecha en que la información de un datamart fue actualizada.
Para ello O3 Report dispone de un mecanismo que permite consultar esta información utilizando MDX
Definiendo la consulta
En esta sentencia, CubeInfo indica que se requiere información del Datamart, y LastModifiedDate identifica la la fecha de la última
actualización del mismo.
En el ejemplo que se muestra a continuación se nombró la consulta como "Fecha de Actualización de Vinos"
Por ejemplo es posible agregar una Tabla, como se describe en la sección Especificando los datos a utilizar
Otra alternativa que se muestra a continuación es utilizar un elemento Data que no requiera pertenecer a ninguna Tabla
1. Arrastrar el item Data desde la Paleta hasta el área de diseño del reporte.
Esto mostrará automáticamente la siguiente ventana solicitando la información que se desea mostrar.
2. Cancele la edición en esta ventana ya que se requiere antes indicarle de qué Conjunto de datos (Data Set) se obtendrán los datos.
3. En la pantalla de edición de propiedades seleccione la opción Binding
4. Indique el Conjunto de datos (Data Set) apropiado. En el ejemplo sería "Fecha de Actualización de Vinos"
5. Finalmente resta indicar, para el elemento Data, qué columna del Conjunto de Datos contiene la información
6. Presione el botón derecho sobre el Data recién agregado, y seleccione la opción Change Data Column.
Aparecerá la siguiente pantalla:
7. Active la casilla junto a la columna LastModifiedDate y acepte los cambios
Parametrizando el reporte
Los reportes pueden ser parametrizados con dos tipos de parámetros:
Parámertos simples y parámetros en cascada, en los siguientes links aparecen ejemplos prácticos de como usar cada tipo de parámetro.
Parametrización Simple
En la parametrización simple los parámetros que se definen sos parametros directos sobre el reporte.
Parametrización en Cascada
Por otra parte en la parametrización en cascada los parámetros dependen entre sí, siendo recalculados al modificar alguno.
Parametrización con Fechas
La parametrización es muy útil para trabajar con fechas.
Parametrización Simple
Parametrización en Cascada
Parametrización con Fechas
UserLogin como parámetro del reporte en ePortal
Parametrización Simple
Con frecuencia los reportes requieren cierto grado de parametrización para que el propio usuario pueda filtrar la información que se despliega,
restringiendo así el análisis a subconjuntos de la información.
En esta sección se describe como agregar un parámetro al reporte que permita desplegar los datos de un único vendedor sin que esto afecte la
estructura del reporte.
1. Desde el panel Data Explorer presionar el botón derecho del mouse sobre el elemento Report Parameters
2. Crear un nuevo parámetro
Esta acción abre el editor de parámetros
3. Indique los siguientes datos del parámetro
4. La selección de la forma en que se despliegan los datos como List Box despliega un conjunto de opciones adicionales propias de esta
forma de visualización.
La lista desplegable (list box) podrá contener opciones estáticas o dinámicas.
El caso estático permite al diseñador del reporte indicar de forma estática la lista de elementos que se incluirán en la lista.
El caso dinámico permite al diseñador definir una consulta que cargue la lista con datos almacenados, por ejemplo, en un cubo de O3
5. Indique el tipo de lista dinámica
Este tipo de parámetro requiere de la existencia de un Conjunto de Datos (Data Set) desde donde se tomarán los valores para cargar la
lista.
6. Utilizando el botón Create New...cree un nuevo Conjunto de datos como se indica a continuación:
Name Vendedores
Para más detalles sobre la definición de un Data Set consultar la sección Especificando los datos a utilizar
Select value column: Campo del Data Set que contiene la clave del parámetro.
En nuestro caso usaremos unique_name
Select display text: Campo del Data Set que contiene la etiqueta del parámetro a
mostrar al usuario
En nuestro caso label
11. Presione el botón OK para concluir la creación del Parámetro. Este aparecerá en la ventana Data Explorer bajo Report Parmeters.
En este punto es posible ejecutar el reporte para ver cómo se muestra una ventana donde se solicita el valor del parámetro de entre una lista de
opciones que son obtenidas del cubo de O3
Filtrar Consulta
Utilizando el Parámetro en la consulta
Una vez definido el parámetro es necesario utilizarlo en la consulta para que filtre la misma y devuelva únicamente el Vendedor seleccionado por
el usuario.
Para ello modificaremos el Conjunto de Datos (Data Set) definido en la sección Especificando los datos a utilizar.
1. Desde el Data Explorer, hacer doble click sobre el Conjunto de Datos Ventas MDX.
2. Modificar la consulta MDX para que contenga lo siguiente
SELECT
{[Measures].[Litros Vendidos], [Measures].[Venta Neta]} ON COLUMNS
,CROSSJOIN({[Vendedores].[Vendedor].?}, {[Vinos].[Vino].members}) ON ROWS
FROM [Vinos]
Notar el signo de interrogación en la sección correspondiente a las filas. Este signo marca el lugar donde se sustituirá el valor del
parámetro cuando se ejecute la consulta.
3. Seleccione Parameters en el editor del Data Set
4. Agregue un nuevo parámetro con el botón New...
5. Configure el parámetro de acuerdo a lo siguiente
6. Finalmente resta ejecutar el reporte para ver cómo se filtran los datos para mostrar únicamente las ventas del Vendedor seleccionado
Una vez definido el parámetro es necesario utilizarlo en la consulta para que filtre la misma y devuelva únicamente el Vendedor seleccionado por
el usuario.
Para ello modificaremos el Conjunto de Datos (Data Set) definido en la sección Especificando los datos a utilizar.
1. Desde el Data Explorer, hacer doble click sobre el Conjunto de Datos Ventas MDX.
2. Modificar la consulta MDX para que contenga lo siguiente
SELECT
{[Measures].[Litros Vendidos], [Measures].[Venta Neta]} ON COLUMNS
,CROSSJOIN({[Vendedores].[Vendedor].members}, {[Vinos].[Vino].members}) ON ROWS
FROM [Vinos]
6. Modificar en la definición del parámetro Select value column unique_name por label.
7. Finalmente resta ejecutar el reporte para ver cómo se filtran las ventas para el Vendedor seleccionado.
Parametrización en Cascada
En muchos casos, en los que el usuario debe elegir un valor entre una larga lista para un parámetro, es conveniente ir aproximando la búsqueda
en varios pasos.
En el caso que se desarrolla en este tutorial, hemos definido hasta el momento un parámetro para filtrar el reporte para un vendedor
determinado. Una forma de facilitar la localización del vendedor es catalogarlo primero entre Distribuidor y Venta Directa.
De esta forma se podría solicitar primero el Canal para luego elegir el vendedor de la lista de vendedores de ese canal.
Esta sección explica cómo establecer esta dependencia entre los parámetros a través de Parámetros en Cascada.
Nota
Se recomienda haber leido antes la sección Parametrización Simple
Name: Canales
Query
SELECT
{[Vendedores].[Canal].members} ON
COLUMNS
FROM [Vinos]
2. Cree un conjunto de datos (Data Set) para construir la lista de Vendedores de cada Canal
Name: VendedoresDelCanal
2.
Query
SELECT {[Vendedores].?.children}
ON COLUMNS
FROM [Vinos]
3. Desde el panel Data Explorer presionar el botón derecho del mouse sobre el elemento Report Parameters
4. Crear un nuevo Parámetro en Cascada
Name: Canal
Value: unique_name
Name: VendedorDelCanal
Value: unique_name
Hasta este punto se definió una Cascada de 2 Parámetros y 2 Conjuntos de datos, uno para cada parámetro de la cascada.
Lo que resta es relacionar los parámetros para que uno actúe sobre el otro.
Probando lo realizado
Para probar lo realizado cree un nuevo Data Set con los siguientes datos:
SELECT
{Measures.[Litros Vendidos]} ON COLUMNS,
{Vinos.[Vino].members} ON ROWS
FROM Vinos
WHERE ([Vendedores].[?])
Nota
En la consulta aparece un signo de interrogación, lo que indica es que en ese lugar hay un parámetro.
Agregue el parámetro Vendedor Por Canal en el conjunto de datos como se indica en Parametrización Simple
Cree una tabla con la información de Ventas por Canal y Vendedor como se explica en Diseñando la forma del reporte
... ...
Ugni Blanco 0
Si usted desea cambiar el valor del parámetro deberá hacer click en Show Report Parameters y se volverá a abrir la ventana anterior,
pudiendo elegir un nuevo canal y vendedor.
Nota
Se recomienda haber leido antes Parametrización en Cascada.
En el siguiente ejemplo se muestra cómo definir un reporte donde ver litros de vinos vendidos por todos los vendedores, parametrizando en los
meses.
Primero cree un conjunto de datos (Data Set) que contenga la siguiente información:
* Name: Años
* Data Source: O3 MDX View
* Data Set Type: O3 Data Set
* Query La siguiente expresion en MDX:
Una vez definido el Data Set se podrá visulizar el mismo desde la vista Data Explorer (Explorador de datos) del O3Reporting:
1. Haga click derecho en Report Parameters y elija la opción New Cascading Parameter y cree una cascada de parametros con nombre
Fechas.
2. Presione Add para agregar un parámetro a la cascada.
3. Ingrese los siguientes datos:
7.
7. Agregue el parámetro Año al conjunto de datos creados como se indica en Parametrización Simple
Una vez realizado el Data Set el la vista Data Explorer (Explorador de datos) de su eclipse deberá aparecer de la siguiente manera:
8. Haga click derecho sobre Cascading Parameter Group - Fechas y seleccione la opción Edit. Aparecerá la siguiente pantalla:
9. Seleccione Add para agregar un nuevo parámetro a la cascada.
10. Ingrese los siguientes datos:
SELECT
{[Fecha].?} ON COLUMNS,
{[Vendedores].[Vendedor].members} ON ROWS
FROM [Vinos]
WHERE Measures.[Litros Vendidos]
14. Agregue el parámetro Meses al conjunto de datos creados como se indica en Parametrización Simple
Una vez realizado el Data Set el la vista Data Explorer (Explorador de datos) de su eclipse deberá aparecer de la siguiente manera:
15. Cree una tabla con la información de Ventas por Vendedor y Meses como se explica en Diseñando la forma del reporte
16. Seleccione Preview. Aparecerá la siguiente pantalla:
17. Seleccione el Año para el cual desea ver los litros vendidos por los vendedores. Se actualizará automáticamente los valores de Meses.
18. Seleccione el Mes para el cual desea ver el reporte.
19. Seleccione OK
Por ejemplo si elige como año "2002" y como mes "mar / 2002" el reporte mostrará:
Mykonos 0
... ...
Si se desea cambiar el valor del parámetro deberá hacer click en Show Report Parameters y se volverá a abrir la ventana anterior, pudiendo
elegir un nuevo año y mes.
Esto es independiente de la aplicación de los permisos definidos en O3, los que se aplican siempre independientemente del envío del parámetro.
En el caso de que el usuario sea un vendedor y el reporte muestre datos de venta, es posible filtrar las ventas y mostrar solamente las del
vendedor.
Para esto es necesario contar con el login del usuario de alguna forma en el cubo, que puede ser teniendo una dimensión con el login (en este
caso, la dimensión no debe definirse como oculta), o teniendo el login del vendedor como etiqueta larga del nivel vendedor.
En el caso de tener una dimensión con el login, en O3 Report se puede realizar una consulta MDX o una vista, siempre con la condición
de que la dimensión login venga en los datos.
En el caso de setear el login como etiqueta larga, es necesario definir una vista utilizando las etiquetas largas, y que la misma cuente
con la dimensión vendedor.
En ambos casos primero se debe crear el parámetro del reporte con el nombre "userLogin", ya que así se llama el parámetro que le pasa el
Enterprise Portal. El mismo debe ser definido como oculto (hidden).
Luego se crea un data set para que traiga los datos, de una forma o de otra, y en el mismo data set se aplica un filtro para que el parametro login
coincida con el login de los datos.
En caso de que el reporte obtenga los datos de una consulta a la base, es posible filtrar los datos en la consulta a la base, i.e.: que la base
aplique el filtro y traer en el data set solamente los datos del usuario. Esta opción no está disponible en la consulta a un cubo de O3, donde los
datos siempre son filtrados por el reporte luego de recuperados.
En este caso es posible aplicar un parñametro al data set, vinculándolo con el parámetro del reporte, para luego filtrar en la consulta con el
caracter '?', de esta forma:
Consulta de ventas
select cliente, monto
from Ventas
where vendedor_login=?
group by cliente
Restricciones
El envío del parámetro userLogin se realiza solamente en el Enterprise Portal, no se realiza en O3 Web. De todas formas, siempre se aplican los
permisos definidos sobre los cubos en O3.
Todo reporte se organiza en diferentes secciones y estas secciones se ubican una a continuación de la otra en forma vertical.
Cada sección a su vez incluye un contenedor que es un elemento gráfico donde se ubica el resto de los componentes del reporte, como ser
etiquetas, datos, imágenes, etc.
Grilla
Tabla
Lista
En este tutorial se utiliza una Tabla para ubicar los datos del reporte dada su flexibilidad y facilidad de uso. En particular la tabla permite:
Para ver cómo quedaría el reporte una vez ejecutado es posible seleccionar el tab Preview de la ventana de reporte o el botón View Report de
la barra de herramientas (File >> View Report >> View report in web viewer)
1. Seleccionar la tabla. Esto se hace haciendo click sobre la solapa con la etiqueta Table que aparece cuando se mueve el mouse por
encima de la tabla
Al seleccionar la tabla el editor de propiedades despliega todos los atributos de la tabla que pueden ser modificados
2. Seleccione el tab Sorting para habilitar las opciones de ordenamiento de los registros de la tabla
3. Presione el botón Add para agregar un nuevo criterio de ordenamiento
4. Seleccione el campo por el cual se ordenarán los registros, por ejemplo Litros Vendidos
El resultado de aplicar el nuevo orden puede observarse viendo una vista preliminar del reporte.
En el caso que se expone en este tutorial parece natural presentar el reporte agrupando las ventas de vino por Vendedor, de modo que el
nombre del Vendedor aparezca una única vez como encabezado del grupo y luego se muestre el detalle de los vinos vendidos por dicho
Vendedor.
Esta operación de agrupar registros dentro de un reporte comunmente se conoce como agregar Cortes de Control.
1. Seleccione la tabla
2. Seleccione el tab Groups del Editor de Propiedades para habilitar las opciones de agrupamiento
3. Presione el botón Add para agregar un nuevo griterio de agrupamiento
4.
4. Ingrese Vendedores como nombre del grupo
5. Seleccione el campo Vendedor (Vendedores_Vendedor) como criterio de agrupamiento. Adicionalmente se puede elegir el orden en que
estos grupos se despliegan (ascendente o descendente)
7. Al hacer esto tanto el campo de Vendedor en la fila de detalle, como el título de vendedor en el encabezado de la tabla, carecen de
sentido por lo que se pueden eliminar
6. Al aceptar los cambios aparece en la tabla un nuevo elemento totalizador de la columna de Litros Vendidos por Vendedor.
7. Repetir la misma operación para la Venta Neta
Formateando la información
En esta sección se detallan los pasos necesarios para hacer que el reporte luzca mejor. En particular se verá cómo
Tal como se vio en secciones anteriores, al seleccionar un elemento del reporte, el Editor de Propiedades muestra atributos relacionados con el
elemento seleccionado permitiendo así modificar su comportamiento o presentación.
Esto permite modificar el formato de cada uno de los elementos del reporte en forma independiente logrando una gran flexibilidad.
Sin embargo, también es posible ajustar el formato del reporte definiendo estilos que permitan controlar las propiedades de varios elementos
similares en forma simultánea. Este tutorial explica cómo formatear el reporte haciendo uso de los estilos.
Definiendo Estilos
En el reporte construido hasta el momento se pueden identificar los siguientes tipos de elementos
Esta clasificación sugiere la necesidad de contar con estilos diferentes para cada caso.
1.
1. Seleccione la opción de menú Element -> New Style...
Esto despliega el editor de estilos. Este editor puede invocarse mediante otros mecanismos como por ejemplo botón derecho sobre el
elemento al que luego se le asignará el estilo
2. Ingrese Encabezado como nombre del Estilo (Custom Style)
3. Seleccione el grupo de atributos Text Block a la izquierda
4. Seleccione la alineación del texto (Text alignment) centrada
5. Seleccione el grupo de atributos Border
6. Defina los bordes superior e inverior de tipo Solid y de ancho 1 point
Juntando Celdas
El encabezado del grupo se vería más vistoso si abarcara el ancho total del reporte. Esto puede lograrse juntando celdas (Merge Cells)
Por último ajustaremos el ancho de la primera columna para que tenga un tamaño fijo y dé la noción de indentación necesaria para identificar los
vinos que corresponden a cada vendedor
1. Seleccione la tabla
Esto muestra selectores para las filas y columnas alrededor de la tabla
2. Seleccione la primera columna
3. Especifique un ancho de 1 cm para dicha columna en el Editor de Propiedades
Estilos predefinidos
Existe un conjunto de estilos ya predefinidos con la herramienta que permiten formatear elementos famosos del reporte.
Tal es el caso de tablas, filas, celdas, etc.
A continuación se muestra el editor de estilos donde se ha seleccionado la opción de Estilo Predefinido, lo cual permite seleccionar el estilo que
se desea modificar.
En particular la imagen muestra la selección del estilo report que permite configurar el formato de todo el reporte.
Formato Condicional
Permite resaltar elementos cuando ocurre alguna condición, la cual puede ser sobre el propio dato u otro.
Por ejemplo:
Otra alternativa puede ser alternar el color de las filas, facilitando la lectura de la tabla con muchos datos.
Referencia aqui
Funciones de Birt
O3 Report cuenta con funciones propias de Birt, que podremos utilizar al momento de definir una expresión.
Aquí se detallan alguna de las clases disponibles con las funciones que cada una provee:
BirtComp
BirtMath
BirtStr
BirtComp
Clase BirtComp
La clase BirtComp proporciona funciones para comparar valores, por ejemplo, para probar si un valor es igual, mayor o menor que otro valor.
Todas las funciones devuelven verdadero o falso.
BirtComp.anyOf
Sintaxis
Parámetros
Devoluciones
True si un valor objetivo coincide con un valor en la fuente; devuelve false en caso contrario.
Ejemplos
La prueba del siguiente ejemplo si Canadá, México o EE.UU. son los valores en el campo País. Si alguno de los países está en el campo, la
función devuelve true.
La prueba del siguiente ejemplo, si 15 de enero 2009 o 31 de enero 2009 son valores en el campo payDate:
La prueba del siguiente ejemplo si dos códigos de los productos específicos son los valores en el campo de código de producto. Si bien el valor
aparece en el campo, la cadena de obsoletos se muestra, de lo contrario el valor ProductCode se muestra tal y como aparece en el campo.
BirtComp.between
Sintaxis
Parámetros
Devoluciones
True si el valor de fuente es entre el objetivo1 y los valores objetivo; devuelve false en caso contrario.
Ejemplos
Las siguientes expresiones prueban si los valores del campo están dentro de un rango específico de valores:
BirtComp.between (row ["SalesTotal"], 10000, 20000)
BirtComp.between (row ["CustomerName"], "A", "M")
BirtComp.between (row ["OrderDate"], "01/01/2009", "01/31/2009")
El siguiente ejemplo calcula las fechas de envío. Si un valor de OrderDate es en diciembre de 2008 (entre el 12/01/08 y 12/31/08), añadir 5 días
para el valor OrderDate. Si un valor de OrderDate es en un mes que no sea diciembre, añadir 3 días para el valor OrderDate.
BirtComp.compareString
Esta función prueba si un valor de cadena coincide con otro valor de la cadena, teniendo en cuenta las condiciones especificadas.
Sintaxis
Parámetros
ignoreCase - Especifique true para realizar una comparación entre mayúsculas y minúsculas. Especifique false para realizar una comparación
entre mayúsculas y minúsculas.
recorte - Especifique true para eliminar los espacios en blanco iniciales o finales antes de comparar los dos valores. Los espacios en blanco en
medio de una cadena no se quitan. Especifique false si desea que la comparación incluya espacios en blanco iniciales o finales.
Devoluciones
True si el valor coincide con el valor fuente1 fuente2; devuelve false en caso contrario.
Ejemplos
BirtComp.equalTo
Sintaxis
BirtComp.equalTo (fuente, destino)
Parámetros
Devoluciones
True si el valor de fuente es igual al valor objetivo; devuelve false en caso contrario.
Ejemplos
Las siguientes expresiones prueban si los valores del campo son iguales a los valores especificados:
BirtComp.greaterOrEqual
Sintaxis
Parámetros
Devoluciones
True si el valor de fuente es mayor o igual al valor objetivo; devuelve false en caso contrario.
Ejemplos
Las siguientes expresiones prueban si los valores del campo son mayores o iguales a los valores especificados:
BirtComp.greaterThan
Sintaxis
Devoluciones
True si el valor de fuente es mayor que el valor objetivo; devuelve false en caso contrario.
Ejemplos
Las siguientes expresiones prueban si los valores del campo son mayores que los valores especificados:
BirtComp.lessOrEqual
Sintaxis
Parámetros
Devoluciones
True si el valor de fuente es menor o igual al valor objetivo; devuelve false en caso contrario.
Ejemplos
Las siguientes expresiones prueban si los valores del campo son menores o iguales a los valores especificados:
BirtComp.lessThan
Sintaxis
Parámetros
True si el valor de fuente es menor que el valor objetivo; devuelve false en caso contrario.
Ejemplos
Las siguientes expresiones prueban si los valores del campo son inferiores a los valores especificados:
BirtComp.like
Esta función prueba si un valor de cadena coincide con un patrón. El patrón debe utilizar la sintaxis SQL de patrones.
Sintaxis
Parámetros
objetivo - El modelo de cadena para que coincida. Debe incluir el patrón entre comillas dobles (""). Utilice la caja correcta al escribir los
caracteres que desea hacer coincidir. Usted puede utilizar el siguiente carácter especial en un patrón:
Un carácter de porcentaje (%) coincide con cero o más caracteres. Por ejemplo,%ace% coincide con cualquier cadena que contenga la
subcadena ace, tales como Facebook y MySpace. No coincide con Ace Corporation porque esta cadena contiene la letra A en
mayúscula, y no la a minúscula.
Un guión bajo (_) que coincide exactamente con uno de los caracteres.
Para hacer coincidir un porcentaje literal (%) o carácter guión bajo (_), se precedera a los caracteres con dos caracteres de barras invertidas ('\
\').
Por ejemplo, para que coincida con S_10, utilice el siguiente patrón:
S\ _10
Devoluciones
True si el valor de fuente coincide con el valor objetivo; devuelve false en caso contrario.
Ejemplos
El ejemplo siguiente devuelve verdadero para los valores en el campo de código de producto que empiezan con S18:
En el siguiente ejemplo real de los valores productName que contienen la subcadena Ford precedida por un solo carácter devuelve:
BirtComp.match
Esta función prueba si un valor de cadena coincide con un patrón. El patrón debe utilizar la sintaxis de expresiones regulares de JavaScript.
Sintaxis
Parámetros
objetivo - El modelo de cadena para que coincida. En la sintaxis de las expresiones regulares de JavaScript, se especifica un patrón dentro de un
par de caracteres barra diagonal (/) .
Usted puede utilizar cualquier carácter especial con el apoyo de expresiones JavaScript regulares, como las siguientes:
Un signo de interrogación (?) Coincide con cero o una ocurrencia del carácter anterior a la misma.
Un asterisco (*) que coincide con cero o cualquier número de apariciones del carácter anterior a la misma.
Un carácter de punto (.) Coincide con cualquier carácter.
Un carácter de intercalación (^) especifica que la subcadena a buscar es en el principio de una cadena.
Un carácter que especifica una búsqueda entre mayúsculas y minúsculas.
Para hacer coincidir un carácter especial literalmente, se precedera al carácter especial con un carácter barra invertida ().
Por ejemplo, para que coincida con S * 10, utilice el siguiente patrón:
/ S \ * 10 /
Devoluciones
True si el valor de fuente coincide con el valor objetivo; devuelve false en caso contrario.
Ejemplos
El ejemplo siguiente devuelve verdadero para los valores en el campo de código de producto que empiezan con S18:
En el siguiente ejemplo real de los valores productName que contienen la subcadena Ford regresa:
BirtComp.notBetween
Sintaxis
Parámetros
True si el valor de fuente no es entre el objetivo1 y los valores objetivo; devuelve false en caso contrario.
Ejemplos
Las siguientes expresiones prueban si los valores del campo para ver si están fuera de un determinado rango de valores:
El siguiente ejemplo calcula las fechas de envío. Si un valor OrderDate no es en diciembre de 2008 (no entre 12/01/08 y 12/31/08), añadir 3 días
para el valor OrderDate. Si un valor de OrderDate es en diciembre, cinco días para añadir el valor OrderDate.
BirtComp.notEqual
Sintaxis
Parámetros
Devoluciones
True si el valor de fuente no es igual al valor objetivo; devuelve false en caso contrario.
Ejemplos
Las siguientes expresiones prueban si los valores del campo no son iguales a los valores especificados:
BirtComp.notLike
Esta función prueba si un valor de cadena coincide con un patrón. El patrón debe utilizar la sintaxis SQL de patrones.
Sintaxis
BirtComp.notLike (fuente, destino)
Parámetros
objetivo - El modelo de cadena para que coincida. Debe incluir el patrón entre comillas dobles (""). Utilice la caja correcta al escribir los
caracteres que desea hacer coincidir. Usted puede utilizar el siguiente carácter especial en un patrón:
Un carácter de porcentaje (%) coincide con cero o más caracteres. Por ejemplo,%ace% coincide con cualquier cadena que contenga la
subcadena ace, tales como Facebook y MySpace. No coincide con Ace Corporation porque esta cadena contiene la letra A en
mayúscula, y no la a minúscula.
Un guión bajo (_) que coincide exactamente con uno de los caracteres.
Para hacer coincidir un porcentaje literal (%) o carácter guión bajo (_), se precedera a los caracteres con dos caracteres de barras invertidas ('\
\').
Por ejemplo, para que coincida con S_10, utilice el siguiente patrón:
S\ _10
Devoluciones
True si el valor de fuente no coincide con el valor objetivo; devuelve false en caso contrario.
Ejemplos
El ejemplo siguiente devuelve false para los valores en el campo de código de producto que empiezan con S18:
El ejemplo siguiente devuelve false para los valores de productName que contienen la subcadena Ford precedidos por un solo carácter:
BirtMath
Clase BirtMath
La clase BirtMath proporciona funciones para manipular datos numéricos, por ejemplo, para sumar, restar, dividir, multiplicar, y redondear
números.
BirtMath.add
Sintaxis
Parámetros
n1 - El primer número a utilizar en el cálculo.
Devoluciones
Ejemplo
El ejemplo siguiente devuelve la suma de los valores en los campos SalesTotal y Shipping:
BirtMath.ceiling
Esta función redondea un número hacia arriba, alejado de 0, al múltiplo más cercano especificado.
Sintaxis
Parámetros
Devoluciones
Ejemplos
BirtMath.ceiling ()
Si el valor del precio es 20.52, la expresión devuelve 20.60. Si el valor del precio es 20.40, la expresión devuelve 20.40. No hay redondeo se
debe a que 20,40 es un múltiplo de 0,1.
BirtMath.divide
Esta función devuelve el resultado de dividir un número por otro.
Sintaxis
Parámetros
Devoluciones
Ejemplos
El ejemplo siguiente devuelve el resultado de dividir los valores del campo total de valores en el campo Cantidad:
BirtMath.mod
Sintaxis
Parámetros
divisor - El número por el cual el primer número está dividido. Debe especificar un número distinto de cero.
Devoluciones
Ejemplos
Los siguientes ejemplos muestran los resultados que devuelve la función de números específicos:
El siguiente ejemplo comprueba si los números en el campo de grado son pares o impares. Cuando el divisor es 2, la función devuelve 0 para los
números pares, y 1 para números impares.
BirtMath.multiply
Sintaxis
Parámetros
Devoluciones
Ejemplo
En el ejemplo siguiente se devuelve el resultado de multiplicar los valores en los campos QuantityOrdered y PriceEach:
BirtMath.round
Sintaxis
Parámetros
dec - El número de dígitos de redondeo para todo el número. Si se omite este argumento, la función supone 0.
Devoluciones
Ejemplos
Los siguientes ejemplos muestran los resultados que devuelve la función de números específicos:
BirtMath.roundDown
Sintaxis
Parámetros
dec - El número de dígitos de redondeo para todo el número. Si se omite este argumento, la función supone 0.
Devoluciones
Ejemplos
Los siguientes ejemplos muestran los resultados que devuelve la función de números específicos:
Las rondas de ejemplo siguiente se establecen los valores en el campo PriceEstimate para devolver un número entero:
BirtMath.roundUp
Sintaxis
Parámetros
dec - El número de dígitos de redondeo para todo el número. Si se omite este argumento, la función supone 0.
Devoluciones
Ejemplos
Los siguientes ejemplos muestran los resultados que devuelve la función de números específicos:
Las rondas de ejemplo el seguimiento de los valores en el campo PriceEstimate para devolver un número entero:
BirtMath.safeDivide
Esta función devuelve el resultado de dividir un número por otro, evitar una división por cero condición.
Sintaxis
Parámetros
Devoluciones
Ejemplos
El siguiente ejemplo muestra los resultados que devuelve la función de números específicos:
En el ejemplo siguiente se devuelve el resultado de dividir los valores en el ámbito de los ingresos por valores en el campo de volumen. Si el
valor de volumen es 0, la función devuelve 0.
BirtMath.subtract
Sintaxis
BirtMath.subtract (n1, n2)
Parámetros
Devoluciones
Ejemplo
BirtStr
Clase BirtStr
La clase BirtStr proporciona funciones para manipular cadenas, por ejemplo, para concatenar cadenas, recortar espacios adicionales, ver las
partes de una cadena, o una cadena en mayúsculas o minúsculas.
BirtStr.charLength
Sintaxis
BirtStr.charLength (fuente)
Parámetro
Devoluciones
Ejemplos
BirtStr.concat
Sintaxis
Parámetro
Devoluciones
Ejemplo
En el ejemplo siguiente se devuelve una dirección completa mediante la concatenación de los valores de varios campos:
BirtStr.indexOf
Esta función devuelve la posición de una subcadena especificada en una cadena determinada.
Sintaxis
Parámetros
inicio - (Opcional). La posición en la cadena de origen, donde comienza la búsqueda. Si se omite este argumento, la función comienza la
búsqueda desde el primer carácter de la cadena.
Devoluciones
La posición numérica de la subcadena en la cadena. El primer carácter de una cadena que comienza en 0. Si la subcadena no se encuentra, la
función devuelve -1.
Ejemplos
En el ejemplo siguiente se utiliza BirtStr.indexOf (), en relación con BirtStr.left () para mostrar los caracteres que preceden al carácter de espacio
en un nombre de cliente. El BirtStr.left () función extrae una subcadena de una longitud especificada, a partir del primer carácter. En este
ejemplo, la longitud de la subcadena de pantalla es igual a la posición numérica del carácter de espacio.
BirtStr.left
Esta función extrae una subcadena de una longitud especificada de una cadena, a partir de la más a la izquierda, o en primer lugar,.
Sintaxis
BirtStr.left (fuente, n)
Parámetros
Devoluciones
Ejemplos
En el ejemplo siguiente se utiliza BirtStr.indexOf (), en relación con BirtStr.left () para mostrar los caracteres que preceden al carácter de espacio
en un nombre de cliente. El BirtStr.left () función extrae una subcadena de una longitud especificada, a partir del primer carácter. En este
ejemplo, la longitud de la subcadena de pantalla es igual a la posición numérica del carácter de espacio.
BirtStr.right
Esta función extrae una subcadena de una longitud especificada de una cadena, a partir de la más a la derecha, o el último carácter.
Sintaxis
BirtStr.right (fuente, n)
Parámetros
Devoluciones
Ejemplos
En el ejemplo siguiente se utiliza BirtStr.right (), en relación con la BirtStr.indexOf () y BirtStr.charLength () para mostrar los caracteres que
aparecen después de que el carácter de espacio en un nombre de cliente. En este ejemplo se supone que el número de caracteres después del
guión varía. Por lo tanto, la longitud de la cadena completa (devuelto por BirtStr.charLength ()) menos la longitud hasta el guión (que devuelve
BirtStr.indexOf ()) es el número de caracteres para mostrar.
Si el nombre del cliente es Julie Murphy, la expresión devuelve Murphy. Si el nombre del cliente es Kwai Li, la expresión devuelve Li.
BirtStr.search
Esta función devuelve la posición de una subcadena especificada en una cadena determinada. La subcadena puede contener caracteres
comodín.
Sintaxis
Parámetros
patrón - El patrón de la cadena a buscar. La búsqueda distingue entre mayúsculas y minúsculas. Puede usar los siguientes caracteres comodín
en un patrón:
Un asterisco, coincide con cero o más caracteres, espacios incluidos. Por ejemplo, n * t partidos tn, el estaño y el adolescente.
Un signo de interrogación, coincide exactamente con uno de los personajes. Por ejemplo, no? N coincide con canela, diez, estaño, y una
tonelada. No coincide con la adolescencia o tn.
Para coincidir con un asterisco literal o signo de interrogación en una cadena, preceden a los personajes con dos caracteres de barra invertida (\
). Por ejemplo, para encontrar la subcadena R * 10, utilice el modelo de cadena siguientes:
"R\ \ * 10"
índice - (Opcional). La posición en la cadena de origen, donde comienza la búsqueda. Si se omite este argumento, la función comienza la
búsqueda desde el primer carácter de la cadena.
Devoluciones
La posición numérica de la subcadena en la cadena. El primer carácter de una cadena que comienza en 0. Si la subcadena no se encuentra, la
función devuelve -1.
Ejemplos
En el ejemplo siguiente se devuelve la posición numérica de los patrones de cadena especificada en cadenas específicas:
En el siguiente ejemplo para el patrón de texto, S*A, en cada valor en el campo ProductCode. Si el código de producto es KBS5412A, la
expresión devuelve 2.
En el ejemplo siguiente BirtStr.search usos (), en relación con BirtStr.left () para mostrar los caracteres que preceden al patrón de texto, *
Modelo, en nombre de un producto. El BirtStr.left () función extrae una subcadena de una longitud especificada, a partir del primer carácter. En
este ejemplo, la longitud de la subcadena de pantalla es igual a la posición numérica del patrón de texto.
BirtStr.toLower
Sintaxis
BirtStr.toLower (fuente)
Parámetro
Devoluciones
Ejemplo
BirtStr.toUpper
Sintaxis
BirtStr.toUpper (fuente)
Parámetro
Devoluciones
Ejemplo
BirtStr.trim
Esta función devuelve una cadena con todos los espacios iniciales y finales en blanco eliminados. No quita los caracteres en blanco entre las
palabras.
Sintaxis
BirtStr.trim (fuente)
Parámetro
fuente - La cadena de la que para eliminar los espacios iniciales y finales en blanco.
Devoluciones
Una cadena con todos los espacios iniciales y finales en blanco eliminados.
Ejemplo
En el ejemplo siguiente se utiliza BirtStr.trim () para eliminar todos los espacios iniciales y finales en blanco de los valores en los campos de
datos Nombre y Apellidos.
BirtStr.trimLeft
Esta función devuelve una cadena con todos los espacios iniciales y finales en blanco eliminados. No quita los caracteres en blanco entre las
palabras.
Sintaxis
BirtStr.trimLeft (fuente)
Parámetro
Devoluciones
Ejemplo
En el ejemplo siguiente concatena un literal de cadena con cada valor en el campo customerName. BirtStr.trimLeft () elimina todos los caracteres
en blanco que precede el valor customerName modo que no hay caracteres en blanco entre la cadena literal y el valor customerName.
BirtStr.trimRight
Esta función devuelve una cadena con todos los caracteres en blanco de cola eliminado. No quita los caracteres en blanco entre las palabras.
Sintaxis
BirtStr.trimRight (fuente)
Parámetro
Devoluciones
Ejemplo
En el ejemplo siguiente concatena cada valor en el campo de comentario con un punto y coma, a continuación, con un valor en el campo de
acción. BirtStr.trimRight () elimina todos los caracteres en blanco después del valor de comentario de modo que no hay caracteres en blanco
entre la cadena de comentario y el punto y coma.
Como ya hemos visto, siempre estamos trabajando con un Data Sets fijo, con cantidad de columnas ya conocidas, pero este caso es distinto, ya
que cuando pase el tiempo (meses), se irán agregando columnas.
Caso de Ejemplo
Reporte que nos informe los litros vendidos de los distintos vinos por año.
Utilizaremos el Datamart de Vinos que se brinda con la instalación.
Partiendo que vamos a utilizar como Data Set una vista de O3, debemos considerar de configurar la misma anidando las dimensiones
correspondientes a la información que queremos utiliza en el reporte y en las columnas la o las medidas.
Creando el Reporte
En la ventana de Palette encontramos el elemento Cross Tab y lo arrastramos a la posición que deseamos en el Reporte.
Generamos un nuevo Data Cubes (Vinos) y los respectivos Groups (Dimensiones) y Summaries (Medidas), que utilizaremos en el reporte.
Luego arrastramos los elementos que deseamos pertenezcan en el reporte, Año para la celda superior derecha (número de columnas variables),
celda inferior izquierda para los Vinos y la celda inferior derecha para los litros vendidos.
Se pueden realizar todos las mejores de formato de información y de celdas como de costumbre.
De esta manera si aplicamos la generación del reporte, obtendremos el mismo con tres años de ventas (tres columnas).
Luego de cargar al datamart con nueva información (año 2010), generamos el reporte y obtenemos una columna nueva ... con el nuevo año.
Almacenando el reporte
Una vez definido el reporte se debe grabar la definición del mismo. Esta operación tiene por objetivo almancenar el diseño del reporte realizado.
Para que el usuario pueda consultar el reporte es necesario que el mismo esté disponible en el servidor. Para ello es preciso Exportar el reporte
luego de ser diseñado.
Los elementos básicos de una gráfica son los siguientes, y se muestran en el gráfico a continuación.
Chart area (contiene todas las partes de una gráfica, como ser el título, el gráfico, las leyendas)
Plot (contiene el gráfico en sí)
Legend (las leyendas del gráfico)
Ejemplo de uso
Para mostrar la configuración del formato, se muestra un ejemplo de gráfica de torta con un problema, y se muestran los pasos a seguir para
resolverlo.
A continuación se muestra una captura de un reporte. Como se puede observar, las leyendas de la gráfica se muestran cortadas. Para resolver
este problema es necesario ajustar el ancho de las leyendas, y el ancho de la gráfica. Primero el ancho de las leyendas, porque se están
mostrando truncadas.
Luego de resuelto esto, las leyendas quedan con ancho distinto en cada gráfica lo que resulta en plots de distintos tamaños (porque estos se
ajustan al tamaño de la leyenda). Por lo tanto es necesario definir un ancho fijo para los gráficos.
Inicialmente, cuando se crea la gráfica, todos los plots se muestran del mismo tamaño a pesar de tener un tamaño que se ajusta
automáticamente, porque el espacio asignado para la leyenda (Leyend Wrapping Width) es muy restringido y todas se muestran cortadas.
Haciendo doble click en una gráfica en Report, se abre el cuadro de edición. En la tercera pestaña, "Format Chart" se encuentran las opciones
de formato. Clickeamos en "Legend" en el árbol de la izquierda. Abajo clickeamos en el botón "Layout", para que se abra la ventana Legend
Layout, como se muestra en la siguiente imagen.
Los elementos que se pueden configurar aquí son:
Ancho del elemento gráfica: 310 points (Property Editor -> Properties -> General -> Width)
Format Chart -> Plot -> Area Format -> Width Hint: 100 y Height Hint: 100
Legend Wrapping width: 100
Legend: Max Percent: 100
Luego, se modifica el Legend Wrapping width y se obtiene la situación que se muestra en la siguiente imagen. Esto ilustra el funcionamiento del
Legend Wrapping width.
En esta última captura se observa que no todos los elementos de la leyenda son desplegados. Esto se resuelve aumentando la altura del
elemento de la gráfica (Property Editor -> Properties -> General -> Height).