1. Tutoriales de O3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Agregación para Saldos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Conexión de O3 a través del protocolo XMLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Consultas MDX para reportes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Introducción a MDX de O3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 Estructura y datos del cubo Demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3 Caso 1 Lista de elementos en ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.4 Caso 2 Lista de elementos de un nivel en ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.5 Caso 3 Filtro básico en dimensiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.6 Caso 4 Lista de elementos según jeraquía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.7 Caso 5 Combinando formas de listar elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.8 Caso 6 Combinación de varias dimensiones en ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.9 Caso 7 Ocultar elementos en ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.10 Consulta MDX de metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Fuentes de datos XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 Metadata pública . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6 Modo de Consulta Paginado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7 Soporte de Fechas Nulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.8 Tutorial Exportación e Importación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.9 Tutorial Expresiones First & Previous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.10 Tutorial Migración O3Server.cfg a Base de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.11 Tutorial Nuevas Funciones Estadísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.12 Tutorial O3 Enterprise Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.12.1 La Estructura del ePortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.12.2 Agregando un Nuevo Espacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.12.3 Editando Páginas de un Espacio Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.12.4 Agregando Contenido a una Página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13 Tutorial O3 Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.1 Creando un Reporte nuevo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.2 Especificando los datos a utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.3 Diseñando la forma del reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.4 Formateando la información . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.5 Parametrizando el reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.5.1 Parametrización Simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.5.2 Parametrización en Cascada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.5.3 Parametrización con Fechas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.6 Almacenando el reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.14 Tutorial O3 ReportCast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.14.1 Declarando la Programación de un Reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.14.2 Agendando el envío de un Reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.14.3 Configurar envío de reportes en diferentes formatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.15 Tutorial Personalización del formato de fecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.16 Tutorial Sincronización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.17 Web Services Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 5 5 6 8 8 9 9 10 10 11 11 12 14 18 20 20 22 23 26 35 36 37 39 40 42 43 44 49 53 56 56 60 65 76 77 78 78 79 86 88 90 Tutoriales de O3 A continuación se describen diversas funcionalidades de O3 en la forma de guías que orientan a los usuarios mediante ejemplos y casos concretos. Acceso directo a los tutoriales organizados por componentes Reporting Nuevo Reporteador Lenguaje de consulta MDX para reportes Distribución automática de reportes Web Portal Nuevo O3 Enterprise Portal Análisis OLAP mediante O3 Browser (desktop y web) Modo de consulta a demanda Nuevas funciones estadísticas y de aplicación financiera Nuevos cálculos con referencia a elementos de la grilla: primero y previo Definición de Datamarts - O3Studio Agregación para Saldos Personalización del formato de fecha Manejo de valores de fechas vacías o valores nulos Metadata pública Fuentes de datos XML Web Services Data Source Conexión de O3 a través del protocolo XMLA Administración del Servidor y Actualización de Modelos Wizard de Migración de Versiones Exportación e Importación Sincronización Carga Automática de Datamarts Agregación para Saldos Método de Agregación para Saldos O3 ofrece un conjunto de mecanismos de agregación orientados a tomar información en función de la disponibilidad de la misma con respecto a una dimensión de tipo fecha. Este mecanismo es el adecuado cuando se hace una consulta y se quiere obtener la informaicón más actualizada con respecto a la fecha que está siendo consultada. A continuación se describen para un caso los tres mecanismos disponibles, el tercero Primero/Ultimo con datos fue introducido en la versión 5.0 Para estos ejemplos, se presenta cual es la información disponible en un modelo multidimensional para tres artículo y para la medida Stock Disponible. En los tres casos se muestra el resultado de consultar a nivel de Mes. Primero/Último (first/last member in dimension) Nos trae los datos para el primer/último período sin importar si tiene datos o no. Veamos con un ejemplo, en este caso un stock de 3 artículos Artículo 20/1 22/1 23/1 24/1 25/1 26/1 27/1 28/1 29/1 30/1 31/1 último Art.1 4 2 8 10 15 1 25 10 5 6 12 12 Art.2 4 2 8 10 15 0/nan Art.3 7 2 4 10 1 1 21 10 5 0/nan Si los datos no tuvieran valor para el último día del mes, el resultado de la consulta sería todo 0/nan. Artículo 20/1 22/1 23/1 24/1 25/1 26/1 27/1 28/1 29/1 30/1 Art.1 4 2 8 10 15 1 25 10 5 6 Art.2 4 2 8 10 15 Art.3 7 2 4 10 1 31/1 Último 0/nan 0/nan 1 21 10 5 0/nan Primero/Último dinámico (dinamic first/last) Nos trae los datos para el primer/último período en el cual hubieron datos. Para ejemplificar, volviendo al caso del stock mercaderías. Al pedir el stock a fin de mes me retornarían no solo los productos que se movieron ese día, sino los de días anteriores que tuvieron movientos. Nótese que para elementos diferentes se traen datos de fechas diferentes Artículo 20/1 22/1 23/1 24/1 25/1 26/1 27/1 28/1 29/1 30/1 31/1 Último Dinámico Art.1 4 2 8 10 15 1 25 10 5 6 12 12 Art.2 4 2 8 10 15 Art.3 7 2 4 10 1 1 21 10 5 Artículo 20/1 22/1 23/1 24/1 25/1 26/1 27/1 28/1 29/1 30/1 Art.1 4 2 8 10 15 1 25 10 5 6 Art.2 4 2 8 10 15 Art.3 7 2 4 10 1 15 5 31/1 Último Dinámico 6 15 1 21 10 5 5 Primero/Último con datos (First/Last with data) Nos trae los datos para el primer/último período en el cual para algún elemento al menos existen datos, de nuevo supongamos el caso del stock. Notese que en este caso para el día 31 no hay datos pero si para el día 30 (art.1) Artículo 20/1 22/1 23/1 24/1 25/1 26/1 27/1 28/1 29/1 30/1 31/1 Último con Datos Art.1 4 2 8 10 15 1 25 10 5 6 12 12 Art.2 4 2 8 10 15 Art.3 7 2 4 10 1 1 21 10 3 5 Artículo 20/1 22/1 23/1 24/1 25/1 26/1 27/1 28/1 29/1 30/1 Art.1 4 2 8 10 15 1 25 10 5 6 Art.2 4 2 8 10 15 Art.3 7 2 4 10 1 0/nan 0/nan 31/1 Último con Datos 6 0/nan 1 21 10 3 5 5 Conexión de O3 a través del protocolo XMLA Soporte de XMLA en O3 A partir de la versión 5.0 se agrega un componente para conexión a cubos de MSAS (o incluso de otros proveedores) a través del protocolo XMLA. Descripción Los cubos se deben publicar en el servidor, pero la conexión finalmente se realiza desde el cliente. En el caso desktop esto implica que el O3Browser se conecta al servidor XMLA, en el caso portal es el O3Portal quien lo realiza. Autenticación En el caso desktop, se solicita al usuario final un login específico para el servidor XMLA En el caso portal, se especifica en la declaración del cubo en el servidor de O3, el usuario/password que se utilizará para la conexión a XMLA. Una vez publicado el cubo en O3Server, el usuario accede desde el O3portal o desde O3Browser de la misma manera que accede a cubos propios de O3 Performance Suite. No hay diferencia para el usuario final entre los distintos tipos de cubos que puede navegar, lo que significa que todas las funcionalidades de O3 Perfromance Suite están disponibles para ambos casos. Publicación de cubos en O3Server Es necesario publicar los cubos en el servidor para que podamos tener acceso desde O3, ya sea en modalidad desktop o web. Esta tarea es realizada desde el componente O3 Server Administrator. La siguiente pantalla muestra la información requerida para definir la conexión a SSAS: Al publicar un nuevo cubo en el servidor de O3, es necesario indicar si es un cubo generado con O3 Performance Suite (opción Cubo O3 Nativo ) o por el contrario es un cubo generado por otro proveedor (opción XMLA). Este último es el caso que debemos indicar si estamos definiendo una conexión a un cubo de SQL Server Analisis Services. Se debe indicar la URL para conectarse a un cubo XMLA completando los siguientes campos: URL del Web Service Catálogo Cubo Usuario y contraseña son obligatorios si se desea analizar la información a través de la interfaz web de O3. A continuación de definen los roles que tienen acceso al cubo publicado. Los roles son los definidos en O3. Para los cubos que son accedidos por el protocolo XMLA no está disponible la restricción parcial de la información que proveen los perfiles de acceso. Configuración de XMLA en Microsoft SSAS Para habilitar XMLA en SQL Server 2008: http://bloggingabout.net/blogs/mglaser/archive/2008/08/15/configuring-http-access-to-sql-server-2008-analysis-services-on-microsoft-windows-server-20 Para habilitar XMLA en SQL Server 2005: http://www.microsoft.com/technet/prodtechnol/sql/2005/httpasws.mspx Para habilitar XMLA en SQL Server 2000: http://technet.microsoft.com/en-us/library/aa902642(SQL.80).aspx NOTA: Debe habilitarse "Basic Authentication" o "Anonymous Access" como mecanismo de seguridad. Debe tenerse en cuenta que con el mecanismo "Basic" la clave se transfiere sin encriptar. Se puede habilitar HTTPS para que la comunicación se realice a través de un canal seguro. Consultas MDX para reportes 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 por enumeración 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 jerarquía en ejes Caso 5: Combinación de formas de listar elementos en ejes Caso 6: Combinación de varias dimensiones en ejes (anidamiento de dimensiones) Caso 7: Ocultar elementos en ejes Ejemplo Una sentencia MDX de consulta tiene la siguiente estructura básica. 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. La consulta MDX sería la siguiente: 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". Introducción a MDX de O3 Estructura de las sentencias MDX Una sentencia MDX de consulta tiene la siguiente estructura básica SELECT <colExpresion> ON COLUMNS, <rowExpresion> ON ROWS FROM <cubeName> WHERE <filterExpresion> Expresiones en O3 MDX La estructura general de una dimensión en O3 es: <dimension name> <main root> <level ... <alternative <level ... <alternative <level ... ... name> root1> name> root2> name> Las expresiones en O3 MDX pueden tener como prefijo ("[" y "]" se utilizan si los nombres contienen espacio): [<dimension name>].[<root>] donde "<root>" puede ser la raíz principal o una raíz alternativa. En caso de omitir la raíz, se asume la raíz principal. A continuación se presentan dos ejemplos de expresiones que referencian a un elemento (miembro en la terminología de MDX). En particular, ambas expresiones denotan el mismo elemento. Customers.Customers.[Customer Type].[Major Accounts] Customers.[Major Accounts] La primera se trata de la forma completa de referenciar al elemento (nombre de dimensión.nombre de la raíz.nombre del nivel.etiqueta del elemento) mientras que la segunda se trata de la forma más simple (nombre de dimensión.etiqueta del elemento). Las medidas son tratadas como una dimensión y el prefijo a utilizar en este caso debe ser: Measures Ejemplo de una expresión que referencia a una medida: Measures.[Units Sold] En resumen, dado SELECT {d.r.mi} si r es el nombre de la raíz principal de la dimensión d entonces se busca el miembro con nombre mi en la raíz principal de la dimensión d, sino, si r es el nombre de una raíz alternativa de la dimensión d entonces se busca el miembro con nombre mi en la raíz alternativa correspondiente, sino, se busca el miembro con nombre mi en la raíz principal de la dimensión con nombre d Estructura y datos del cubo Demo Cubo Demo Permite el análisis de ventas de una empresa hipotética que vende bicicletas (valores de la dimensión Products). Dichas ventas (medidas por cantidades de unidades vendidas, ganancias, costos, etc.) se pueden analizar por las dimensiones fecha (Date), clientes (Customers), vendedores (Salesmen) y lugares geográficos (Location). Modelo Datos de muestra de las dimensiones visualizados en el O3 Browser Presione sobre las imagenes para agrandarlas Dimensión con raíces alternativas Ejemplo de dimensión: dimensión Date Ejemplo de raíz principal: Date Ejemplos de raices alternativas: Last 12 months: agrupa los últimos 12 meses, Year-to-date: agrupa las fechas desde comienzo del año hasta el día actual, Previous month: contiene el mes anterior con respecto a la fecha actual Dimensión "común" A diferencia del caso anterior, las dimensiones comunes tienen una sola raíz que es omitida ya que tiene el mismo nombre que la dimensión. Bajo el nombre de la dimensión, se muestran directamente los elementos del nivel de más arriba. Ejemplo: dimensión Products Se muestran los elementos del nivel Family (familias por las que están clasificadas las bicicletas) Dimensión medidas Esta dimensión al igual que en el caso anterior tiene una sola raíz que es omitida. Bajo el nombre de la dimensión (siempre Measures) aparecen los nombres de las medidas. Caso 1 Lista de elementos en ejes Lista de elementos en ejes Supongamos que se desean ver las unidades vendidas en France sólo para los tipos de clientes Major Accounts y Minor Accounts. SELECT {Customers.[Major Accounts], Customers.[Minor Accounts]} ON COLUMNS, {Location.[France]} ON ROWS FROM Demo WHERE (Measures.[Units Sold]) Para ello se indicaron por enumeración los elementos deseados en el eje correspondiente a las columnas. Caso 2 Lista de elementos de un nivel en ejes Lista de elementos de un nivel en ejes Supongamos que se quiere una visión global del comportamiento de cada uno de los vendedores con respecto a las unidades vendidas y sus comisiones del modelo de ventas independientemente del resto de las dimensiones de análisis. SELECT FROM {Measures.[Units Sold], Measures.[Commissions]} ON COLUMNS, {Salesmen.Seller.members} ON ROWS Demo En esta consulta, para referirnos a todos los vendedores se hace uso del operador .Members que devuelve todos los elementos de un nivel. Caso 3 Filtro básico en dimensiones Filtro básico en dimensiones Supongamos que se desea ver los ingresos (Revenue) por la venta de bicicletas Mountain bikes profesionales en los años 2002 y 2003 en US. La siguiente consulta MDX nos provee dicha información. SELECT {Date.Date.[2002], Date.Date.[2003]} ON COLUMNS, {Location.[US]} ON ROWS FROM Demo WHERE (Products.[Mountain Bikes].[Professional], Measures.[Revenue]) En esta consulta podemos ver el uso del WHERE. Esta parte de la consulta se utiliza para "filtrar" (slice) las dimensiones. En este caso, de la dimensión conteniendo las medidas se elige la medida Revenue. Además, se filtra la dimensión productos, por lo que el resultado mostrará para US los ingresos en 2002 y 2003 teniendo sólo en cuenta esa línea de bicicleta. Por otro lado, puede verse el uso de la expresión Date.Date.[2003] para hacer referencia al año 2003. La dimensión Date del cubo Demo es una dimensión con raíces alternativas. La expresión anterior está diciendo explícitamente a que elemento dentro de que raíz. Entrando en más detalle, la raíz que se está utilizando Date es la raíz principal. Por lo tanto, la expresión Date.[2003] es también correcta y es interpretada como se desea, es decir se referencia al elemento 2003 de la raíz por defecto que es la raíz principal. Supongamos ahora que se desea ver los ingresos también por la venta de la misma línea de bicicletas en US pero en lo que va del año 2004 (suponiendo un momento que estamos en una fecha actual del 2004). La consulta MDX en este caso debe explicitamente referirse a la raíz alternativa de manera de obtener el resultado deseado. SELECT {Date.[Year-to-date].[2004]} ON COLUMNS, {Location.[US]} ON ROWS FROM Demo WHERE (Products.[Mountain Bikes].[Professional], Measures.[Revenue]) Caso 4 Lista de elementos según jeraquía Lista de elementos según jerarquía Supongamos que se quiere conocer las unidades vendidas en las distintas ciudades de France por parte de los clientes bajo el tipo denominado Major Accounts. La siguiente consulta MDX nos provee dicha información. SELECT {Customers.[Major Accounts].children} ON COLUMNS, {Location.[France].children} ON ROWS FROM Demo WHERE (Measures.[Units Sold]) En esta consulta se aprovecha las jerarquías de niveles definidas para la dimensiones clientes y ubicaciones geográficas. Para referirse a las ciudades de France e imaginándose la jerarquía como una relación familiar, se hace mención a los hijos del país France ( Location.[France].children). Análogamente, a los clientes clasificados como Major Accounts se hace mención usando Customers.[Major Accounts].children. Caso 5 Combinando formas de listar elementos Combinando formas de listar elementos Supongamos que se quiere visualizar el comportamiento de cada uno de los vendedores con respecto a todas las medidas del modelo de ventas independientemente del resto de las dimensiones de análisis. Esta consulta es similar al caso 2, sólo que ahora no nos interesa estudiar por tal o cual medida sino por todas aquellas que se tengan definidas en el modelo de análisis. SELECT FROM {Measures.children} ON COLUMNS, {Salesmen.Seller.members} ON ROWS Demo Esta consulta hace uso del operador .children para obtener los hijos de la raíz de todas las medidas y del operador .members para hacer referencia a todos los elementos del nivel vendedor. Caso 6 Combinación de varias dimensiones en ejes Combinación de varias dimensiones en ejes (anidamiento de dimensiones) Supongamos que se desea visualizar las unidades vendidas de bicicletas Mountain Bikes profesionales y de recreación en Brasil y España en los años 2001 y 2002. Esta consulta involucra 3 dimensiones: productos, ubicaciones y fechas. La visualización usando 3 ejes es algo complejo y lo que en general se quiere es presentar esta información siguiendo el formato bi-dimensional y encapsular las 3 dimensiones. La siguiente consulta MDX presenta la información requerida combinando 2 de las dimensiones en un eje. SELECT {Date.[2001], Date.[2002]} ON COLUMNS, { (Location.[Brazil], Products.[Mountain Bikes].[Professional]), (Location.[Brazil], Products.[Mountain Bikes].[Recreational]), (Location.[Spain], Products.[Mountain Bikes].[Professional]), (Location.[Spain], Products.[Mountain Bikes].[Recreational]) } ON ROWS FROM Demo WHERE (Measures.[Units Sold]) En esta consulta, se plantea por enumeración las combinaciones que nos interesan. El eje de las filas contiene 2 dimensiones, ubicación ( Location) y productos (Products). Se puede decir que la dimensión producto está anidada en la dimensión ubicación y se tienen todas las combinaciones de los 2 elementos de interes de cada una de las 2 dimensiones, lo que hace que se tengan 4 tuplas en el eje de las filas. Una tupla en MDX es una combinación de miembros de dimensiones originados de dimensiones diferentes. Con seguridad que la pregunta que surge aqui es, ¿qué pasa si lo que se quiere visualizar es algo análogo pero considerando todas las líneas de bicicletas Mountain Bikes contra todos los países?. Es decir, ¿qué brinda MDX, nuevamente, como alternativa a la enumeración?. MDX brinda la función CrossJoin(). Esta función produce todas las combinaciones de 2 conjuntos (es decir, un "producto cartesiano"). Su uso común es para situaciones como la presentada arriba combinando 2 o mas dimensiones en un único eje a los efectos de visualizar los datos bajo la forma de una matriz bi-dimensional (valga la redundancia). La siguiente consulta permite visualizar la información que surge de la pregunta anterior. SELECT {Date.[2001], Date.[2002]} ON COLUMNS, CrossJoin( {Location.children}, {Products.[Mountain Bikes].children}) ON ROWS FROM Demo WHERE (Measures.[Units Sold]) CrossJoin() espera como parámetros 2 conjuntos, de manera que si se necesita realizar un anidamiento de más de dos conjuntos, se debe anidar la invocación a dicha función. Por otro lado, hay que tener en cuenta que los 2 conjuntos sobre los cuales se quiere hacer el producto cartesiano deben originarse a partir de dimensiones diferentes. Esta función ofrece una combinación interesante de conjuntos obtenibles a partir de las diferentes dimensiones pero su uso debe tener en cuenta que se trata de una función que tiene un impacto potencial importante en la performance de la consulta MDX. Caso 7 Ocultar elementos en ejes Ocultar elementos en ejes Supongamos que se desea ver la evolución en el tiempo salvo en el año 2002 de los costos por la venta de todas las líneas de bicicletas. La siguiente consulta MDX permite obtener la información. SELECT except(Date.Year.Members, {Date.[2002]}) on COLUMNS, {Products.Line.Members} on ROWS FROM Demo WHERE (Measures.[Cost]) Para ocultar el año 2002 se utiliza la función MDX except(). Esta función devuelve un conjunto que es la diferencia entre 2 conjuntos provistos como argumentos. El comportamiento por defecto de esta función es de eliminar los duplicados antes de determinar la diferencia. Este comportamiento puede ser alterado invocando a la función except con un tercer argumento con valor ALL. Por último, se hace notar que los 2 conjuntos provistos como argumentos a esta función debe ser originados desde la misma dimensión y debe estra definidos al mismo nivel dentro de la dimensión. Consulta MDX de metadata Consulta MDX de metadata Supongamos que se desea consultar cuales son las ciudades de Francia sin importar que valores tengan en sus medidas. SELECT {Location.[France].children} ON COLUMNS, {} ON ROWS FROM Demo Para ello se indicó que se filtrá el conjunto vacío en ROWS, obligando a que no haya intersección de dimensiones y por lo tanto el retorno no serán celdas del cubo sino únicamente la metadata. En el motor de O3 la siguiente consulta es equivalente a la anterior SELECT {Location.[France].children} ON COLUMNS FROM Demo Atención La sintaxis de la consulta anterior es soportada por el motor de O3 pero viola la especificación de MDX La misma consulta en un motor que si siga la expecificación de MDX devolverá el valor de la medida por defecto de todas las ciudades de Francia Fuentes de datos XML Fuentes de datos XML en O3 Se tiene el siguiente archivo XML, que se utilizará como fuente de datos de un modelo: <Demo> <Row Date="4/30/1998"> <!--Date>4/30/1998</Date--> <ProductFamily>Mountain Bikes</ProductFamily> <ProductLine>Professional</ProductLine> <Product>930</Product> <Market>France</Market> <Place>Lille</Place> <Salesman>Waly Brian</Salesman> <SalesGroup>B Team</SalesGroup> <CustomerType>Major Accounts</CustomerType> <Customer>Doug Delorge</Customer> <UnitsSold>7</UnitsSold> <GrossAmount>9555</GrossAmount> <Discount>1911</Discount> <Cost>3850</Cost> </Row> ... </Demo> Para agregar archivos XML como fuente de datos, se deben seguir los siguientes pasos: 1. Ir a Fuentes de datos, XML Data Source, Agregar XML. 2. En la solapa Descripción indicar nombre y descripción de la fuente de datos XML. 3. En la solapa General: a. Indicar la ruta completa del archivo XML. b. Dependiendo de la estructura del archivo XML puede que se requiera leer mas de una tupla por registro, en este caso indicar el número de tuplas por registro. c. En XPath Principal se muestra la estructura del archivo en forma de árbol. Seleccionar el elemento (correspondiente al tag) que se tomará como referencia para direccionar los campos. Esta será la expresión XPath que se visualiza con formato /Demo/Row, por ejemplo, donde Demo es el tag inicial del archivo XML, le siguen a continuación el o los tags hijos. 4. En la solapa Campos se tiene nuevamente el arbol de tags del archivo, donde se deben seleccionar los campos a utilizar. En la lista se tendrá: a. Los atributos del tag, que son los que tienen @ como prefijo (@Date en el ejemplo). b. Los tags hijos, sin prefijos. 5. El tipo de dato asignado inicialmente para todos los campos es String (al igual que cuando se utilizan archivos de texto como fuentes de datos, el usuario debe cambiar al tipo de dato correcto para cada campo). Se puede clickear Vista previa para visualizar los primeros datos del archivo. Nota La utilización de campos que hagan referencia a niveles superiores en el XPath es causa directa de enlentecimiento, tanto en la consulta realizada al momento de la construcción como al momento de solicitar una vista previa. Se sugiere evitar la utilización de caminos "../" en el XPath en campos de fuentes XML de gran tamaño. Formato de fechas Sólo se soportan los siguientes formatos de fechas, la selección es automática: MM/DD/YYYY MM/DD/YY Ejemplos: 3/31/1998 03/31/98 03/31/2008 Formato numérico El separador decimal debe ser siempre '.' Por ejemplo: 12.34 Metadata pública La nueva capacidad para compartir metadata entre modelos multidimensionales implica el desarrollo, en primer lugar, de un modelo de dimensiones públicas con la o las dimensiones que se reutilizarán. Luego desde un modelo tradicional se hará referencia a la o las dimensiones de este modelo de dimensiones públicas. En este tutorial se presenta un ejemplo para un caso habitual: la dimensión Clientes. A continuación se describen los pasos necesarios para el desarrollo de un modelo de dimensiones públicas, la reutilización de esta dimensión desde un modelo de análisis, y la construcción de éste último. 1. Desarrollo de modelos de dimensiones públicas a. El primer paso para crear este tipo de modelos es definir las fuentes de datos a utilizar, la o las dimensiones (con la jerarquía que se requiera), indicando el namespace del modelo. b. Estos modelos no tienen medidas. Se debe verificar su estructura para comprobar que sus dimensiones pueden armarse correctamente a partir de las fuentes de datos. c. Estos modelos no se construyen ni se publican. Sí se deben almacenar en el servidor, quedando disponibles para usar sus dimensiones desde otros modelos. 2. Desarrollo de modelos con referencias a dimensiones públicas a. Para desarrollar modelos multidimensionales que hagan referencia a dimensiones públicas se deben agregar las fuentes de datos necesarias y agregar dimension/es pública/s indicando a qué dimensión de qué modelo se hará referencia. b. A continuación se termina de definir el modelo de la forma habitual (agregando las medidas y dimensiones comunes que sean necesarias, y verificando el modelo). 3. Construcción de modelos con referencias a dimensiones públicas a. La construcción de modelos que hacen referencia a dimensiones públicas es igual a la de los modelos comunes. b. La única particularidad es que ambos modelos (el de dimensiones públicas y el que hace referencia a éste) deberán almacenarse en el servidor de O3. c. Luego el cubo resultante deberá construirse utilizando el .srv. A continuación se describen estos 3 pasos en forma detallada: 1. Desarrollo de modelos de dimensiones públicas A partir de la versión 5.0, O3 Designer permite la definición de modelos de dimensiones públicas: Estos modelos tienen la siguiente estructura inicial: Procedimiento para definir un modelo de dimensiones públicas: 1. 2. 3. 4. Definir las fuentes de datos para poder construir la metadata. Definir la o las dimensiones con la jerarquía de niveles necesaria. No se definen medidas. Indicar el Namespace del modelo. Una vez finalizado el desarrollo: 1. Verificar el modelo. No se requiere el mínimo de dos dimensiones para que el modelo verifique. 2. Almacenarlo en el servidor. La extensión del archivo resultante también es .mdl. Estos modelos no se construyen ni se publican en el Servidor de O3. En el modelo del ejemplo se tiene una única fuente de datos de la que se obitene el código y el nombre del cliente. Estos campos se utilizan respectivamente como clave y etiqueta corta del único nivel definido para la dimensión Clientes. En la solapa Descripción del modelo (donde también se indica su nombre) se debe completar el campo namespace. En el modelo se le asignó "Comercial". Almacenar el modelo en el servidor. Desde este momento el modelo queda disponible para que sus dimensiones sean reutilizadas desde otros modelos de análisis. 2. Desarrollo de modelos con referencias a dimensiones públicas A partir de la versión 5.0, O3 Designer ofrece la posibilidad de definir dimensiones como referencias a dimensiones públicas. En el siguiente ejemplo se explica el mecanismo para desarrollar un modelo multidimensional que hace referencia a una dimensión pública como parte de la definición de su contexto. Se definirá un modelo de análisis de cantidad y tipos de surtidores por cliente. Se reutilizará la dimensión Cliente definida en el modelo anterior. 1. Se crea un nuevo modelo. Se definen las fuentes de datos necesarias. 2. Se crea una fuente de datos (hechos) para contar los surtidores y otra para construir la dimensión Tipo surtidor. 2. Dada la estructura de este modelo, en la consulta de hechos se debe tener el dato del cliente, para poder vincular los hechos con la dimensión a la que se hace referencia. 3. Indicar que modelo de dimensiones públicas se utilizará, para esto, en la solapa Referencias de la definición del modelo se debe seleccionar: a. Prefijo (para diferenciar dimensiones de igual nombre en modelos dentro del mismo namespace) b. Namespace (se carga al seleccionar el modelo) c. Url del modelo (recordar que los modelos de dimensiones públicas deben almacenarse en el servidor). En caso de querer quitar una referencia a un modelo de dimensiones públicas se la debe seleccionar en esta solapa y presionar Remover. Con esto el modelo desaparecerá del arbol de modelos a los que se puede hacer referencia. 4. Para agregar la dimensión Cliente se debe utilizar: Se solicitará usuario y contraseña para acceder al servidor. Indicar nombre y descripción de la dimensión en la solapa Descripción. 5. Una vez ejecutado el punto 3 se tiene disponible la lista de dimensiones públicas del modelo seleccionado. Esta lista se presenta en forma de árbol en la solapa General de la definición de la dimensión Cliente: Se debe seleccionar la dimensión a utilizar y presionar el botón para agregarla. En ese momento se carga el Catálogo (modelos), Recurso (nombre del modelo) y Nombre Dimensión. Con este paso queda definida la dimensión Cliente. 6. En caso de que se quiera agregar una nueva referencia a otro modelo, en la parte inferior del árbol se tiene un botón Importar que también solicita prefijo, namespace y url del modelo. El nuevo modelo seleccionado se agregará a la lista que se muestra en el árbol. Este método es una alternativa al comentado en el punto 4: 3. Construcción de modelos con referencias a dimensiones públicas Una vez publicado el modelo en el O3 Server Administrator se debe construir el mismo utilizando los Parámetros de Actualización del cubo (archivo .srv). En el caso que el modelo de dimensiones públicas contenga parámetros definidos, es necesario que dichos parámetros sean definidos en el modelo que hace referencia a las dimensiones públicas. De modo que la construcción utilizando un archivo .cfg pueda resolverlos en forma adecuada. Durante la fase inicial de construcción del modelo la fuente de datos (query) utilizada en el modelo de dimensiones públicas es verificada. Luego, en la fase de construcción de la metadata es ejecutada. En ambos casos se la trata como si fuera una fuente mas del modelo: ... Debug: Add a new format from CuboDimPublicas to Nuevo Cubo with source name Clientes Notificaci¾n: Executing query: Surtidores Notificaci¾n: La fuente Surtidores pas¾ la verificaci¾n. Notificaci¾n: Executing query: Tipos Notificaci¾n: La fuente Tipos pas¾ la verificaci¾n. Notificaci¾n: Executing query: Clientes Notificaci¾n: La fuente Clientes pas¾ la verificaci¾n. Fase: Verificando definici¾n de niveles de redundancia. Fase: Verificando definici¾n de niveles de redundancia. Notificaci¾n: Verificando InputSet Full Fase: Fuente de Datos "Surtidores": Verificando. Fase: Fuente de Datos "Tipos": Verificando. Fase: Fuente de Datos "Clientes": Verificando. Fase: "Nuevo Cubo" Verificando campos duplicados. Fase: "Nuevo Cubo" Verificando dimensiones. Fase: "Nuevo Cubo" Verificando dimensiones. Fase: Verificando Dimensi¾n "Clientes". Fase: Verificando nivel de dimensi¾n "Cliente". Fase: Verificando Dimensi¾n "Tipo". Fase: Verificando nivel de dimensi¾n "tipo". Fase: "Nuevo Cubo" Verificando medidas. Fase: Verificando Medida "Cant". Fase: "Cant" Verificando la definici¾n de alcance. Fase: "Nuevo Cubo" Verificando campos virtuales. Fase: "Nuevo Cubo" Verificando campos virtuales. Trace: Estructura de cubo correcta. Debug: Creating schema Debug: Measures set to the schema ... Fase: Construyendo la MetaData. Notificaci¾n: Executing query: Tipos Fase: Total de tuplas procesadas de la fuente "Tipos": 9 Notificaci¾n: Executing query: Clientes Fase: Total de tuplas procesadas de la fuente "Clientes": 302 Notificaci¾n: Metadata lista, se procesaron 311 tuplas. Fase: Cargando informaci¾n en el cubo. Notificaci¾n: Executing query: Surtidores Fase: Total de tuplas procesadas de la fuente "Surtidores": 2,389 Notificaci¾n: Cubo cargado, 311 tuplas procesadas, 823 creadas. Debug: Making Downward Allocation ... ... Fase: Construyendo Fases de Redundancia. Notificaci¾n: Fases de Redundancia construidas. Notificaci¾n: FULL OK ... Modo de Consulta Paginado Modo de Consulta Paginado Nuevo modo de consulta El modo paginado es uno de los 3 modos posibles para realizar consultas y navegar desde el O3 Browser, los otros dos modos son el modo gráfico y el modo de consulta mediante grillas o tablas. El modo paginado es similar al modo de Grilla, en cuanto a que presenta la información en forma tabular, pero se diferencia en la forma de obtener el resultado: el modo paginado trae una cantidad limitada de información en cada págnia que va siendo consultada, en cambio el modo grilla es más adecuado cuando se quiere obtener toda la información del resultado de la consulta. El modo paginado permite navegar sobre grandes cantidades de información, permitiendo un tiempo de respuesta óptimo aún cuando el volúmen de información resultante de la consulta sea del orden de decena o cientos de miles de registros. Otra diferencia entre el modo Grilla y el Paginado es que las reglas sólo se definie sobre las Grillas y que el modo paginado admite expresiones pero con algunas variantes. El modo paginado está orientado al trabajo desde el O3 Browser Web, no esta disponible paro el O3 Browser Desktop. Configuraciones y activación del modo paginado El modo paginado se activa desde la barra de herramientas haciendo click en Opciones->Modo reporte Es posible configurar la cantidad de datos que nos trae O3 en este modo, pudiendo seleccionar entre 100,250 o 500 renglones por vez. Para ello vamos a Opciones->Tamaño de página y clickeamos en la cantidad deseada. Navegar en el modo paginado/reporte Para ir viendo nuevos datos aun no mostrados, solo hace falta hacer click en los links que aparecieran arriba a la derecha. Calculos en modo paginado/reporte El modo poginado permite hacer cálculos en forma similar a al modo grilla pero con algunas diferencias o limitaciones debido a la forma en que trae los datos. Función Fila Columna Suma N/D Disponible Max N/D Disponible Min N/D Disponible Prom N/D Disponible Cant N/D Disponible Soporte de Fechas Nulas El nuevo soporte para fechas nulas permite trabajar con información nula para campos de tipo fecha al momento de la actuallización de los datos del modelo multidimensional, a diferencia de versiones anteriores donde la construcción de un cubo con fechas con valores nulos era cancelada. Esto nos permite utilizar directamente la informacion de las fuentes de datos sin necesidad de procesar estos valores ya sea peviamente a la lectura de estos datos o a través del mecanismo de campos virtuales. Ejemplos de situaciones en las que nos interesa manejar estos valores pueden ser: facturas impagas, clientes sin fecha de ingreso, clientes sin fecha de nacimiento,contratos sin fecha de vencimiento, etc.) En la siguiente figura se muestra la definición de una dimensión fecha, y la designación de un nodo especial para los valores nulos de las fechas, asignando la etiqueta apropiada para interpretar dicho valor. Figura 1: definición de etiqueta para valores nulos en la dimensión fecha Dependiendo de cada modelo y la interpretación de las fechas con valor nulo, se debe definir dónde ubicar este nuevo elemento fecha. Puede ser al comienzo o al final del nivel año en la jerarquía de la dimensión fecha. Por defecto este elemento se muestra al final. La siguiente figura muestra un ejemplo de dimensión fecha con el elemento que representa valores nulos ubicado al principio del nivel año Figura 2: "Sin Fecha Pago" ubicado al comienzo Tutorial Exportación e Importación A partir de esta versión, Ideasoft O3 incorpora las funcionalidades de exportación e importación, que permiten exportar datamarts, scorecards, modelos, reglas, acciones, escritorios, queries, reportes y expresiones públicas a un archivo a un archivo (.zip) desde el Servidor de Administración (AdmServer), e importar desde un archivo exportado a otro servidor. Este mecanismo puede utilizarse por ejemplo para procedimientos de migración de versiones, y para ambientes de trabajo con servidores de producción, desarrollo, y testeo independientes. También puede utilizarse como mecanismo de respaldo de una instalación. Exportación A través de esta funcionalidad, se exportarán todos los elementos existentes en el servidor a un archivo .zip (dependiendo de las opciones de exportación que se describen a continuación). Es decir, se exportarán todos los datamarts(incluyendo vistas, perfiles), tableros de control, reglas, modelos y acciones, escritorios, queries y expresiones públicas disponibles en el servidor. Una vez conectados al servidor en el AdmServer, ir al menú Herramientas (Tools) y seleccionando la opción 'Exportar...' ('Export...') del menú se abre el siguiente diálogo: Se pide al usuario que seleccione el archivo destino de la exportación (.zip), y las opciones de exportación, que incluyen: Exportación de cubos Completa: exporta definiciones y cubos (archivos .cube) Definición: exporta configuración, perfiles, vistas. No: no exporta cubos ni definiciones. Tableros de control: exporta los tableros almacenados en el servidor (istore). Modelos: exporta los modelos almacenados en el servidor (istore). Reglas: exporta las reglas almacenadas en el servidor (istore). Acciones: exporta las acciones asociadas a reglas. Escritorios: exporta los escritorios almacenados en el servidor (istore). Consultas: exporta las consultas (queries) almacenadas en el servidor (istore). Reportes: exporta los reportes almacenados en el servidor (istore). Expresiones: expxorta las expresiones públicas almacenadas en el servidor (istore). En la exportación no se permiten seleccionar elementos individuales (se exportan todos los elementos de las categorías seleccionadas). Si la exportación finaliza correctamente, muestra un mensaje de "Exportación exitosa" y se genera el zip en la ubicación que se indicó. Importación A través de esta funcionalidad, se importarán todos los elementos existentes en el archivo de origen (.zip) al servidor. Es decir, se importarán al servidor todos los cubos (incluyendo vistas, perfiles), tableros de control, reglas, modelos, acciones, escritorios, consultas, reportes y expresiones contenidos en el archivo origen. En caso de existir un elemento de igual nombre en el servidor, al importar se sobreescribirá. En el caso particular de la importación de cubos, si ya existía un cubo de igual nombre publicado en el servidor, el cubo se sobreescribe, pero se mantiene la url de publicación en el servidor. Si el cubo no estaba publicado previamente en el servidor, es posible indicar el directorio del servidor donde importar los cubos (por defecto, directorio cubes bajo jboss/server/default/ideasoft-o3/server) mediante la property o3.cubes.repository.location. Además, en todos los casos el cubo se publica y se marca como disponible. Una vez conectados al servidor en el AdmServer, ir al menú Herramientas (Tools) y seleccionando la opción 'Importar...' ('Import...') del menú se abre el siguiente diálogo: Se pide al usuario que seleccione el archivo origen de la importación (.zip). Presionando el botón 'Importar' ('Import') se ejecuta la importación. Sobre usuarios y roles Los usuarios y roles no son exportados, por lo que el usuario deberá crear nuevamente los usuarios una vez que haya importado, para dar por completo el proceso. Restricciones Actualmente no se permite una serie de acciones en lo que a exportación se refiere: No se permite la selección de elementos puntuales a exportar e importar. No se permite exportar únicamente un datamart (archivo .cube) sin su definición (vistas, perfiles). La exportación no incluye archivos .srv, simulaciones, expresiones privadas, e-portal. No se exportan permisos de istore Actualmente el respaldo (a través de exportación) no incluye archivos .srv, simulaciones, expresiones privadas, e-portal. Tutorial Expresiones First & Previous Expresiones para cálculo de diferencias Operador Previous El operador "previous" permite obtener el valor de la celda inmediatamente superior o adyacente La forma de llamar a la expresión es [nombre_columna,previous] o [nombre_fila,previous] Ejemplo Supongamos tenemos una serie de datos de ventas para diferentes meses Para columna Mes Ventas Venta mes anterior Diferencia [Ventas]-[Ventas,previous] [Ventas,previous] Enero 10 Nan Nan Febrero 15 10 5 Marzo 25 15 10 supogamos el mismo ejemplo pero ahora tenemos las ventas en fila en vez de columnas Para fila Enero Febrero Marzo Ventas 10 15 25 Venta mes anterior [Ventas,previous] Nan 10 15 Diferencia [Ventas]-[Ventas,previous] Nan 5 10 Operador First Este operador permite hacer referencia al primer valor de una serie de datos en una consulta, permitiendo hacer comparaciones con dicho valor. El operador root.first permite hacer referencia al primer valor de una serie, ya sea esta una columna o una fila (según donde sea apliacdo). La forma de utilizar la expresión es [Elemento, root.first]. Esto es la primer celda sin importar las anidaciones/cortes de control. Cuando la expresión se utiliza en un cálculo en una columna, root.first hace referencia a la primer celda de la columna indicada, si se utiliza en una fila hace referencia a la primer celda de la fila. Ejemplo Supongamos se quiere saber en una empresa cuanto más en porcentaje son las ventas respecto al primer mes. Mes Ventas First [Venta],root.first] %Venta con respecto al primer mes (([Ventas,root.first] / [Ventas])-1) * 100 Enero 10 10 0 Febrero 15 10 50 Marzo 25 10 150 Notas Relación del operador First y la funcionalidad Exclude From View El operador first despliega el valor del primer elemento visible, por lo tanto el resultado de un cálculo que utiliza el operador first, se ve afectado si se realiza un "exclude from view" del primer elemento. Tutorial Migración O3Server.cfg a Base de Datos La finalidad de la migración del O3Server.cfg a base de datos es pasar toda la información que contiene (cubos publicados, vistas, etc.) a base de datos, y seguir trabajando desde allí. Los pasos para la migración son: 1. Creación o actualización de la base de datos. 2. Migración de los datos. 3. Configuración del O3Server para iniciarse con base de datos. 1- Actualización o creación de la Base de Datos. No es necesario que el Servidor O3 esté levantado a no ser que se quiera usar la base Hypersonic que viene en el jboss, conectandose por host:puerto. Iniciar el AdmServer y en la toolBar seleccionar "Herramientas -->Generador Esquemas Base de Datos". Esto muestra la siguiente ventana: Se configura la conexión a la base de datos: 1. Motor, las opciones posibles son SQL Server Microsoft, SQL Server Opta, Oracle, MySQL, PostgreSQL, HsqlDb, Derby, other. 2. Manejador (driver) a utilizar (debe tenerse el driver correspondiente en el servidor <InstalaciónO3>\jboss\server\default\lib) 3. Url completa a la base de datos (servidor, puerto de la base de datos, nombre de la misma, etc.). En caso de realizar la migración a una nueva base de datos, la misma debe estar creada de antemano. 4. Usuario y contraseña (que se guardará encriptada) para la base de datos. Además: Config datasource Se debe configurar <InstalaciónO3>\jboss\server\default\deploy\gserver\gserver-hsql-ds.xml, según la base de datos a la que se quiera exportar (salvo que se vaya a utilizar Hypersonic), se debe cambiar el contenido de los siguientes tags: <connection-url>, <driver-class>, <user-name> y <password>, y comentar <metadata>. Configuración inicial (original): <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url> ... <driver-class>org.hsqldb.jdbcDriver</driver-class> ... <user-name>sa</user-name> <password></password> ... <metadata> <type-mapping>Hypersonic SQL</type-mapping> </metadata> Ejemplo para conexión a SQL Server: En este caso la configuración del archivo corresponde a indicar la URL, el driver, usuario, contraseña y comentar el tag indicado. <connection-url>jdbc:sqlserver://Server:1433;DatabaseName=PruebaO3ServerCfg;SelectMethod=cursor</connection-url>...<dri se comenta el tag:--> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) <metadata> <type-mapping>Hypersonic SQL</type-mapping> </metadata> --> Se deberá comentar la property hibernate.dialect = org.hibernate.dialect.HSQLDialect de <InstalaciónO3>\jboss\server\default\ideasoft-o3\GServer.properties si no se va a trabajar con Hypersonic, dejando hibernate.dialect = org.hibernate.dialect.SQLServerDialect si se va a utilizar SQL Server, por ejemplo. Luego se tiene 3 opciones: 1- Verificar la conexión a la base con el botón "Verificar Conexion". Si la conexión es satisfactoria se mostrará un mensaje como el siguiente: 2- En caso de que se quiera crear las tablas, se debe de presionar el botón con la etiqueta "Generar Tablas". Se mostrará el siguiente mensaje: 3- Si las tablas ya existen y lo que se quiere es actualizar la estructura de las mismas, se debe de presionar el botón con la etiqueta "Actualizar Tablas". Se crearán/actualizarán las tablas de RBAC, E2, jwf, y las necesarias para cubos, vistas, cubos-roles, cubos-perfiles, modelos, etc. 2- Migración de los datos. Luego de una actualización exitosa de la base de datos, se debe de proceder a migrar los datos del O3Server.cfg (cubos, vistas, etc.) a la base de datos. Para migrar los datos se debe: 1. Iniciar el O3 server y conectarse usando el AdmServer 2. Luego desde el AdmServer, seleccionar en la toolBar la opción "Herramientas --> Migrador de configuración del Servidor". Para realizar la migración se debe presionar el botón con la etiqueta "Migrar" y a continuación se mostrará en el área de "Mensajes de la migración" la información de qué se migró: 2. 3. La última linea del mensaje está avisando que ya están disponibles los cubos como para comenzar a trabajar desde base de datos. 3- Configuración del O3 Server para levantar con Base de Datos. Luego de haber seguido los pasos anteriores se debe de bajar el servidor y editar el archivo GServer.properties para modificar la property o3.config.dataBase de <InstalaciónO3>\jboss\server\default\ideasoft-o3\GServer.properties, con el valor "true". Al levantar el servidor nuevamente este tomará la información que se guardó en la base de datos y toda nueva información sera guardada en este lugar. Como los usuarios admin y user están en RBAC, se deben crear manualmente en el AdmServer una vez que se migró a base de datos. Volver a trabajar con O3Server.cfg Como ya se mencionó a partir de O3 5.0 se almancena la configuración del servidor en base de datos, a diferencia de versiones anteriores donde la configuración era almacenada en el archivo O3Server.cfg Para facilitar la migración desde versiones anteriores se ofrece este mecanismo que tiene por resultado eliminar el uso del O3Server.cfg y pasar a adminsitrar en base de datos la información de cubos publicados y perfiles de acceso. De todas formas se aclara que si se necesita volver a la situación inicial, trabajando con O3Server.cfg, el procedimiento sería: 1. Apagar la property (o3.config.dataBase = false) que se define en el archivo Gserver.properties ubicado en <O3_DIR>\jboss\server\default\ideasoft-o3 2. Reiniciar el O3Server (Jboss). Los cambios hechos desde la migración (publicación de nuevos cubos, creación de nuevas vistas, etc.), no se verán reflejados en el O3Server.cfg. Tutorial Nuevas Funciones Estadísticas Nuevas funciones estadísticas O3 Performance Suite continúa con la política de agregar nuevas técnicas de análisis de datos. El objetivo es potenciar aún más el poder de análisis de este producto contemplando las solicitudes de nuestros clientes. Es así que se podrán realizar nuevos cálculos estadísticos, algunos de ellos definiendo medidas con nuevos métodos de agregación y otros agregando cálculos a la grilla utilizando las nuevas expresiones estadísticas desde el O3Browser. Sin deternos en este momento a diferenciar la forma de utilización de cada una de las funciones, presentamos en la siguiente lista las nuevas funciones estadísticas: Función Nombre Español Nombre Inglés Desviación Estándar Muestral DesvEst StDev Desviación Estándar Poblacional DesvEstP StDevP Varianza Muestral Var Var Varianza Poblacional VarP VarP Media Cuadrática MediaCuad QuadMean Covarianza Muestral Covar Covar Covarianza Poblacional CovarP CovarP Coeficiente de Correlación Pearson Pearson Distribución Normal Normal Normal Inversa de la Distribución Normal InvNormal InvNormal Regresión Lineal se ofrece como nuevo tipo de gráfico se ofrece como nuevo tipo de gráfico Introducción de un caso de uso Presentamos a continuación un caso de uso que utilizaremos como contexto para introducir y describir los nuevos cálculos estadísticos incorporados. El mismo se irá desarrollando a medida que avanza este tutorial y se basa en el análisis de las ventas de vinos, modelo de análisis distribuido con la instalación del producto O3 Perfomance Suite. En general cuando se analiza un conjunto de datos se tiene interés en calcular primeramente las estadísticas básicas, ya que se trata del primer conjunto de información sobre dichos datos. Algunas cálculos estadíscticos básicos son: Suma, Máximo, Mínimo, Promedio, Cantidad. Dentro de los cálculos estadísticos avanzados se ofrece la posibilidad de calcular: desviación estándar poblacional varianza poblacional media cuadrática. Estas 3 funciones estadísticas pueden ser definidas desde el componente O3Studio al momento de especificar el modelo de análisis o pueden ser definidas como expresiones calculadas agregadas por el usuario en el componente O3Browser. Presentaremos a continuación cómo pueden ser especificadas al momento de definir el modelo multidimensional, es decir desde el componente O3Studio, lo que permite armar un conjunto de medidas que facilitarán el análisis por parte de los usuarios finales. Definición de las funciones estadísticas Consideramos oportuno repasar cómo es la definición de estas funciones estadísticas y con qué fines suelen ser utilizadas: Varianza Poblacional VarP medida de la variabilidad de los datos en relación a su promedio poblacional. La desventaja de la varianza es que su unidad de medida no es la misma unidad que la de los datos originales, o sea, si los datos originales se expresan en litros, la unidad de medida de la varianza será litros cuadrados Desviación Estándar Poblacional DesvEstP medida de la variación de los datos en relación a su promedio poblacional. En la práctica es mas utilizada que la varianza ya que tiene la misma unidad de medida que los datos originales Desviación Estándar Muestral DesvEst mide la variación de los datos en relación al promedio de la muestra Media Cuadrática MediaCuad Cómo se define la desviación estándar desde O3Studio Para definir la desviación estándar O3 Performance Suite ofrece un nuevo método de agregación de medidas tal como se muestra en la siguiente figura. Figura 1. Definición de Desviación Estándar a través de Métodos de agregación Supongamos que el Gerente de Marketing de la empresa que vende los diversos tipos de vinos espera lanzar una nueva campaña con el objetivo de aumentar las ventas de sus productos. Por otro lado el presupuesto que le fue asignado no le permite realizar una campaña masiva para cada uno de los diferentes vinos que su empresa comercializa. Así es que el Gerente decide hacer un análisis de las ventas de sus productos que le permita decidir en cuáles de sus vinos concentrará su próxima campaña. De esta forma decide obtener las siguientes estadísticas para cada uno de los tipos de vinos, a lo largo del tiempo y teniendo en cuenta el volumen de litros vendidos: 1. 2. 3. 4. 5. Total de litros vendidos Promedio de litros vendidos Desviación estándar de los litros vendidos La máximo cantidad de litros vendidos La mínima cantidad de litros vendidos. Las estadísticas de máximo y mínimo valor permitirán calcular cuál es la amplitud de la cantidad de litros vendidos, dando así una idea de la variabilidad existente en las ventas de cada uno de los tipos de vinos. Para analizar un poco más en profundidad esta variación de las ventas en términos de litros, el Gerente analizará el promedio de las ventas juntamente con la información de la desviación estándar. Este conjunto de datos le permitirá determinar cuáles son los tipos de vinos que han presentado menor estabilidad en las ventas, los cuales pueden tomados como candidatos objetivos en la campaña de marketing. Figura 2: Resultados obtenidos Si además de estas estadísticas se quiere agregar por ejemplo la varianza poblacional esto se puede hacer definiendo una medida derivada y seleccionando la opción de ESTADISTICAS de esta ventana. Se elige como TIPO la varianza y como MEDIDA aquella variable que tenemos interés que sea calculada esta estadística. Vale resaltar que en esta ventana, las medidas mostradas son solo las medidas para las cuales ya fueron definido la desviación estándar, o sea, si hay interés en calcular la varianza y/o la media cuadrática de alguna medida, primeramente se debe definir una medida que sea la desviación estándar de esta. Figura 3: Medidas derivadas: Varianza y Media Cuadrática Algunas de estas nuevas funciones también están implementadas en el módulo Browser o sea, O3 Performance Suite permite que a través del módulo Browser el propio usuario agregue sus cálculos estadísticos. La diferencia entre utilizar estas nuevas funciones a nivel del O3Browser e implementarlas como métodos de agregación en O3Studio es que como método de agregación, los datos de las ventas individuales (datos de entrada al modelo) serán utilizadas en los cálculos mientras que cuando estas funciones son definidas directamente en O3Browser, los datos utilizados para los cálculos son los datos que están siendo desplegados en dicho momento. Siendo así, si nuestro interés es estudiar la variabilidad de las ventas del vino Cabernet Sauvignon, Merlot utilizando para esto las funciones de usuarios en O3Browser, necesitaremos que los datos del cubo tengan el nivel suficiente para esto, o sea, el cubo debe permitir mirar los datos a nivel de las ventas individuales. Si esto es posible entonces para obtener la desviación estándar poblacional hacemos: Figura 4. Desviación Estándar Poblacional Si nuestro interés es estudiar la variabilidad de cada uno de los vinos del tipo corte, la función desviación estándar poblacional deberá ser definida como DesEstP([this]) o DesEstP([group]). De esta forma obtenemos los mismos resultados que los presentados en la figura (2). Con la flexibilidad ofrecida por O3 Performance Suite de permitir agregar funciones estadísticas dentro del conjunto de expresiones calculadas en el Browser, los usuarios pueden continuar el análisis de sus datos desde otras perspectivas. Por ejemplo, ahora que ya se conoce la dispersión de los datos de ventas de cada uno de los distintos tipos de vinos se puede analizar cómo es la variabilidad de los grandes tipos de vino, o sea, será que el grupo de vino tipo Corte tiene la misma variabilidad que el tipo Varietal? Otros cálculos interesantes para nuestro análsis, es la posibilidad de obtener el valor de la distribución Normal estándar N(0,1) dado un punto, o sea, dado el valor de z, determinar cual es el valor de P(Z < z) donde Z ˜ N(0,1). Como generalmente z es un numero real o sea con decimales, hay que cuidar la forma de representación de este número, o sea, si z=1,36 entonces en el momento de informar a O3 este valor hay que asegurarse que se esta utilizando la comma y no el punto para separar la parte decimal. Figura 5: Distribución Normal estándar N(0,1) También se encuentra disponible la función inversa de la Normal, o sea, encontrar el valor del punto z que hace con que el área abajo de la curva tenga la probabilidad informada. Continuando con los análisis de datos de las ventas de vino, nuestro objetivo ahora es colaborar con el Analista Financiero en chequear la hipótesis que la variación en los costos del vino Tannat en relación a las ventas bruta, a partir de un determinando momento pasa a ser casi despreciable, o en otras palabras que el costo marginal tiende a cero, como muestra la figura abajo: Figura 6: Costo Marginal por ventas Para este análisis, en Browser seleccionamos los vinos tipo Tannat y elegimos el nivel de trimestre para la fecha. En seguida hacemos A partir de esto, hacer la gráfica de dispersión XY: Figura 7: Gráfica de dispersión XY - Venta Bruta x Costo Observando esta gráfica (Figura 7) vemos que la hipótesis planteada no se se cumple, ya que la tendencia es claramente una función lineal se puede ajustar por una recta este conjunto de datos Figura 8: Ajuste de una función lineal Para que sean mostrados los parámetros de la recta ajustada utilizamos la opción "Mostrar Correlación" obteniendo así la figura abajo: Figura 9: Mostrar los valores de la recta ajustada Las características propias de herramientas OLAP como es el caso de O3 Perfomance Suite para hacer análisis sobre distintas perspectivas nos permite continuar analizando este conjunto de datos de una forma muy amigable. Por ejemplo si nuestro interés además de los análisis de los datos a nivel de trimestres, hay interés en saber si estas mismas tendencias sobre las ventas de los vinos se mantienen a nivel a largo de los meses, es suficiente cambiar el nivel de análisis de la dimensión fecha. Así podríamos seguir los con análisis intentando contestar varias inquietudes sobre este mismo conjunto de datos. Vale la pena resaltar que por mas que O3 Perfomance Suite no sea un producto especifico para "limpieza de datos" puede ayudar en esta tarea ya que dispone de una gran variedad de tipos de gráficas, que en determinados casos ayudan a identificar posibles puntos extremos y/o outliers, como es lo que ocurre con el tipo de vino "Pinot Noir, Merlot, Malbec". Figura 10: Posible punto extremo Si estuviéramos trabajando a nivel de la grilla entonces el cálculo de la correlación lineal sería hecho utilizando la opción "Agregar una fila calculada" y seleccionando la función "Pearson" dentro del grupo de funciones Estadísticas. Figura 11 : Correlación lineal de Pearson En el grupo de funciones estadísticas avanzadas de O3 Performance Suite, además de la función de correlación lineal de Pearson, se puede encontrar por ejemplo la covarianza (populacional o muestral), Observación: Es importante notar la relevancia de la cantidad de cifras decimales utilizada en los cálculos estadísticos. Veamos el siguiente ejemplo: en la figura abajo, se puede observar que los tipos de vino varietal tiene una varianza poblacional correspondiente a 823947,46. Figura 12. Varianza y desviación estándar poblacional Si a partir de la varianza calculamos la desviación estándar manualmente, obtenemos: = 2= 823947,46 = 907,715517109 907,72 el que corresponde al valor mostrado en la figura arriba. Si a partir de la desviación estándar queremos obtener la varianza, hay que cuidar la cantidad de cifras decimales, o sea, a) si consideramos = 907,72 entonces 2 = (907,72)2= 823955,5984 o sea, encontramos una diferencia. b) Simplemente con aumentar la cantidad de cifras decimales para este calculo logramos reducir sensiblemente esta diferencia: = 907,7155 entonces 2 = (907,7155)2= 823947,4289 Tutorial O3 Enterprise Portal Las ventajas del acceso integrado a fuentes de información y aplicaciones son experimentadas diariamente por los usuarios de Internet cuando navegan por sitios como Yahoo, iGoogle, o MSN. La tecnología de Portales Web ofrece la posibilidad de adecuar los contenidos y las funciones ofrecidas por los Portales Web a las necesidades e intereses de cada persona. Actualmente es posible aplicar las ventajas de esta tecnología dentro de las organizaciones, obteniendo así un conjunto de beneficios: entornos de trabajo más potentes, nuevos niveles de productividad, mas rápida curva de aprendizaje, adecuación de los sistemas a las necesidades de cada familia de usuarios (o de cada individuo). Ideasoft O3 ofrece un conjunto de componentes para llevar las capacidades de O3 al entorno de Portales Web, estos componentes responden a un estándar (JSR-168) y se llaman O3 Portlets. Esto incluye la posibilidad de componer páginas que incorporen los principales elementos de visualización de información: gráficos y grillas, semáforos del O3 Scorecard, alertas y resultados de reglas. Ideasoft O3 ofrece también un nuevo Servicio de Web Portal que permite definir en minutos entornos específicos de análisis para grupos de usuarios o usuarios individuales. Trabajando directamente a nivel del Web Browser, los administradores o el usuario final pueden construir Dashboards de análisis pero también pueden incluir en los mismos otros Portlets que brinden información, aplicaciones de oficina (pe. agenda o contactos) o aplicaciones de un sistema de información. Este Tutorial El objetivo de este tutorial es presentar el módulo O3 Enterprise Portal 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. El tutorial está organizado de acuerdo a los pasos necesarios para elaborar un portal que integre varias de las funcionalidades de O3, utilizando los datos almacenados en el cubo de Vinos incluido en la instalación de O3. Nota El ejemplo distribuido con la versión de O3 puede accederse a través de http://<servidor>:8080/eportal donde <servidor> es el nombre o IP del servidor donde se encuentra el O3 Server (JBoss) La Estructura del ePortal Agregando un Nuevo Espacio Editando Páginas de un Espacio Web Agregando Contenido a una Página La Estructura del ePortal Esta sección describe la estructura del Enterprise Portal resaltando aquellos controles más utilizados al momento de definir y las páginas y consumir la información. Este tutorial utiliza la configuración por defecto del Enterprise Portal, la utilización de temas y estilos diferentes podría hacer que varíe la disponibilidad de los controles, así como su apariencia y ubicación. Esta imagen muestra un ejemplo de cómo se ve un página una vez terminada En ella se pueden ver un conjunto de vistas analíticas que incluyen gráficos, tablas, semáforos y links a otros contenidos. La Barra de Navegación La Barra de Navegación se encuentra disponible en la parte superior de la página y brinda un acceso directo a otras páginas definidas dentro del mismo portal. Como se verá más adelante las páginas se almacenan de forma jerárquica lo que facilita su administración. Por defecto, todas las páginas que se agreguen en el primer nivel de la jerarquía serán referenciadas a través de un link en la Barra de Navegación. Sobre la Barra de Navegación se despliega el Logo de la empresa. Este puede ser personalizado para ubicar el que corresponda en cada caso. El Menú de Opciones Sobre el ángulo superior derecho se encuentra el Menú de Opciones. Este control en forma de lista desplegable identifica al usuario conectado y permite acceder a las opciones habilitadas por su perfil de acceso.Entre las operaciones más usuales se encuentran el link a información personal de la cuenta del usuario, así como un link a los espacios web (otras páginas) a los que el usuario tiene acceso. Un usuario administrador o con permisos de administración podrá por ejemplo Agregar nuevo contenido a la página Cambiar la organización del contenido usando diferentes plantillas predefinidas Administrar las páginas (crear, modificar, mover, eliminar) Como se mencionó anteriormente, la última opción de este menú permite pasar a otros espacios a los cuales el usuario tenga acceso. Esta opción despliega un submenú donde se enumeran estos espacios El área de portlets El resto de la página queda disponible para ubicar los diferentes portlets (aplicaciones) habilitados en el portal. La siguiente imagen muestra como cada uno de los elementos gráficos de esta área es un portlet independiente. Algunos de estos portlets podrán desplegar información analítica como gráficas o semáforos, mientras otros podrán ser descriptivos o de navegación como el Indice que se muestra sobre la izquierda. Dependiendo del perfil del usuario, se podrán reubicar los portlets en distintos lugares de la página para ajustar la presentación a la necesidad concreta de cada caso. Esta reorganización de los portlets se describe más adelante. Agregando un Nuevo Espacio Esta sección describe como crear un nuevo Espacio (Comunidad) y asociarle miembros para luego agregarle el contenido deseado. Los Espacios Web Todas las páginas que se definen en el ePortal pertenecen (están definidas) en un Espacio Web. Estos espacios Web pueden ser de diferentes tipos. El Espacio personal que tienen por defecto los usuarios asociados al rol Power User Los espacios que se heredan por pertenecer a una determinada Ubicación Los espacios que se heredan por pertenecer a una determinada Comunidad Ubicaciones Las Ubicaciones son un concepto geográfico que permite organizar a los usuarios de acuerdo al lugar de trabajo. Está pensado principalmente para organizaciones de gran porte con diferentes oficinas ubicadas en lugares físicos diferentes. A los efectos de este tutorial no se consideran El caso que se analiza más en detalle en este tutorial es el de las Comunidades y cómo estas permiten organizar las páginas que ven los usuarios mediante la petenencia o no a las comunidades Comunidades Las comunidades son un mecanismo que permiten agrupar usuarios de acuerdo a características comunes en cuanto a la información que manejan, los intereses que tienen o el tipo de trabajo que desempeñan. De esta forma es posible definir comunidades a las cuales luego se afilian los usuarios pudiendo de esta forma compartir las páginas definidas dentro de la comunidad. Definiendo Nuevas Comunidades La tarea de definición y mantenimiento de comunidades la realiza el Administrador el cual se identifica con la cuenta admin 1. Ingresar al portal con la cuenta de Administrador (admin) http://<servidor>/eportal Esto despliega la página inicial del espacio personal del usuario admin en el que ya se definieron un conjunto de portlets de administración 2. Ubicar el portlet de administración de Comunidades 3. Presionar el botón de Añadir Comunidad 4. Indicar el nombre de la comunidad y opcionalmente una descripción El tipo de comunidad indica el nivel de seguridad que existe para afiliarse a la comunidad. En este caso Abierto es la opción adecuada 5. Verificar que la comunidad está activa 6. Presionar el botón de Guardar para crear la comunidad Este paso debería mostrar la nueva comunidad creada en la lista de las comunidades existentes Asignando Miembros a una Comunidad Una vez creada la comunidad, es necesario asignarle miembros para que puedan acceder a las páginas que dentro de ella se definan. El usuario que creó la comunidad queda automáticamente perteneciente a la comunidad bajo el rol de Comunity Owner 1. En la lista de comunidades disponibles, presionar el botón de Acciones para dicha comunidad Esto despliega la lista de acciones posibles 2. Seleccionar la acción de Asignar Miembros 3. Dentro de la lista de Usuarios Disponibles, seleccionar el o los usuarios deseados 4. Presionar el botón de Actualizar asignaciones Editando Páginas de un Espacio Web Esta sección describe como crear y administrar las páginas de un Espacio (Comunidad) para luego agregarle contenido. Una vez creada al Comunidad es necesario agregarle por lo menos una página para luego ir colocando el contenido en forma de portlets. 1. Desplegar el Menú de Opciones hasta llegar a la comunidad que se desea modificar 2. Hacer click sobre el ícono a la derecha de las Páginas privadas Esta acción crea una página nueva 3. Ingresar el nombre de la página 4. Presionar el botón de Guardar Esto automáticamente deja un nuevo link a la página en la Barra de Navegación 5. Presionar ese nuevo link para ir a la página Esta página no contendrá ningun contenido 6. Nuevas páginas se pueden agregar a la Barra de Navegación eligiendo la opción de Administrar Páginas Para agregar una nueva página a la Barra de Navegación es importante que en la pantalla de Administración de Páginas esté seleccionado el nombre de la Comunidad antes de agregar una nueva página de modo que quede creada en el primer nivel Agregando Contenido a una Página Esta sección describe como agregar contenido (portlets) a una página ya creada, así como cambiar el layout de la página y la ubicación de los portlets. Una vez creada y seleccionada la página, es posible ir agregando el contenido deseado Gráficas Tablas Semáforos Controles de Navegación Textos Imágenes 1. Asegurarse que la página donde se desea agregar nuevo contenido está seleccionada en la Barra de Navegación 2. Seleccionar la Opción de Añadir Portlet Esto despliega sobre la izquierda la lista de Portlets disponibles 3. Expandir el grupo de portlets Ideasoft O3 Esto despliega la lista de portlets de O3 que pueden utilizarse Link Selector Portlet Control que permite definir links a contenido de O3, accesos directos a vistas y cubos O3 Control Portlet Control que permite filtrar contenido de vistas (gráficas y tablas) mediante la selección de elementos de una dimensión en un cubo. Este control permite sincronizar varias vistas en forma simultánea O3 Report Portlet Portlet para inclusión de reportes desarrollados con O3 Report. Para más detalles de los reportes consultar el Tutorial del O3 Report O3 Rules Portlet Despliega la lista de reglas definidas en el servidor, así como su estatus. O3 Scorecard Portlet Permite desplegar indicadores de un Scorecard tanto en formato de Velocímetro como de Semáforo O3 Strategy Map Portlet Despliega un Mapa de Estrategia O3 View Portlet Despliega una Vista de O3 tanto en formato de gráfica como de Tabla. Este Portlet también permite visualizar Reglas en su formato de Gráfica o Tabla 4. Añadir un nuevo portlet O3 View Portlet Esto puede hacerse mediante un click sobre el link Añadir, o arrastrando el portlet desde el grupo hasta el lugar en la página donde se desea agregar. Editando el Portlet Una vez agregado el portlet, es necesario configurarlo para que despliegue la vista deseada y con el formato adecuado. 1. Hacer click sobre el ícono de Preferencias que se encuentra sobre la esquina superior derecha del portlet junto al resto de los íconos de configuración 2. 3. 4. 5. Esto despliega la página de preferencias del portlet donde se podrá indicar el cubo o vista a desplegar Indicar el Cubo, Vista o Regla Opcionalmente se puede modificar el tamaño (altura) del portlet De ser necesario habilitar el control de Configurar para más opciones Presionar Aceptar y luego sobre el link de Volver a la página índice Esto retorna a la página donde ya se encuentra configurado el Portlet deseado 6. Hacer click sobre el título del portlet Esto mostrará un área de texto donde se podrá editar el título 7. Repetir los pasos anteriores para agregar nuevos portlets Cambiando el layout de la página Por defecto las páginas nuevas que se crean están configuradas con un layout (plantilla de la página) de dos columnas, una angosta a la izquierda y una ancha a la derecha. Esta configuración se puede cambiar fácilmente para ajustar a las necesidades de cada página. 1. Seleccionar la Opción de Plantilla de página Esto despliega una ventana con las diferentes plantilla disponibles 2. Seleccionar la plantilla deseada Los portlets existentes se ajustan a la nueva organización 3. De ser necesario es posible arrastrar los portlets de una región a otra Para ello los portlets se arrastran desde la zona de título de cada portlet y se sueltan en las regiones que se muestran sombreadas Tutorial O3 Report O3 Report 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 Tutorial El objetivo de este tutorial 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. El tutorial está organizado 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. Creando un Reporte nuevo Especificando los datos a utilizar Diseñando la forma del reporte Formateando la información Parametrizando el reporte Almacenando el reporte Bibliografía Libro Autor BIRT - A Fild Guide te Reporting Diana Peh/Aletha Honnemann/Nola Hauge Creando un Reporte nuevo Esta sección describe cómo construir un nuevo reporte paso a paso utilizando un ejemplo sencillo con datos que provienen del cubo Vinos distribuido con el producto. El ejemplo terminado puede consultarse aquí. Creando un nuevo Reporte Los reportes pueden crearse de dos formas diferentes: Comenzando con un diseño en blanco. Usando una plantilla prediseñada de reporte. En este caso se sugieren los pasos necesarios para ir armando el reporte ajustándose a un diseño preestrablecido. A los efectos de este tutorial se utiliza un reporte en blanco. 1. Seleccione la opción de menú File->New Report 2. Ingrese mi_reporte.rptdesign como nombre del Reporte 3. Seleccione Blank Report y finalmente presione el botón Finish Con estos pasos queda disponible en nuevo reporte para comenzar a ubicar los elementos sobre él Especificando los datos a utilizar Antes de poder diseñar el reporte es necesario especificar sobre qué datos se trabajará y cuál será el mecanismo de conexión. Este tutorial construye un reporte utilizando datos almacenados en un cubo de O3. La extracción de estos datos se realiza mediante 2 pasos: Definir la fuente de datos (data source) Definir el conjunto de datos (data set) Es posible tener varios conjuntos de datos definidos sobre la misma fuente de datos Definiendo una Fuente de Datos (Data Source) 1. Seleccione la opción del menú Data->New Data Source para crear una nueva Fuente de datos 2. Elija el tipo de fuente de datos para O3 (O3 Data Source) Esto permite definir una fuente de datos a cubos y vistas de O3. Estas fuentes de datos a O3 pueden ser de dos tipos: Fuentes que acceden a vistas almacenadas en el servidor Fuentes que acceden a cubos almacenados en el servidor y utilizan el lenguaje MDX para especificar la consulta 3. Indique el nombre de la fuente de datos (Data Source Name) En este ejemplo llamaremos "O3 Local" a la fuente de datos 4. Ingrese los parámetros de la Fuente de datos Host Name: El nombre o dirección IP del servidor donde se encuentra ejecutando O3. En nuestro caso localhost Port: Puerto del servidor indicado en el parámetro anterior donde se encuentra ejecutando el servidor de O3. En nuestro caso usaremos el puerto por defecto 7777 User Name: Nombre del usuario definido en O3 que se usará para conectarse al servidor. En nuestro caso usaremos el usuario user Password: Contraseña del usuario definido en el campo anterior En nuestro caso usaremos la password del usuario user Query Type: Indica el tipo de Fuente de datos que se usará: Consulta MDX o Vista O3. En nuestro caso O3 View 5. Verificar que la conexión se estableció en forma correcta presionando el botón Test Connection... Definiendo un Conjunto de Datos (Data set) Una vez definida la Fuente de datos, es posible definir los Conjuntos de Datos que se obtendrán de dicha fuente. Cada Conjunto de Datos será una consulta diferente que como se mencinó anteriormente podrá originarse desde una vista o a través de MDX. Sea cual sea el caso, la creación del Conjunto de Datos (Data Set) es la misma. 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: 1. Seleccione la opción del menú Data->New Data Set 1. 2. Indique el nombre del Conjunto de Datos (Data Set Name) 3. Seleccione la Fuente de datos sobre la que se desea definir el conjunto de datos En este ejemplo la fuente de datos se llama "O3 Local". 4. Seleccionar O3 Data Set como tipo de Conjunto de Datos 5. En la ventana de definición del nuevo Conjunto de Datos, ingrese la consulta que se muestra a continuación para obtener los datos desplegados en la vista pública VinosPorVendedor. Esta vista debe haber sido creada con aterioridad en el servidor de O3 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. Vinos Es el nombre del cubo tal como está publicado en el servidor VinosPorVendedor Es el nombre de la vista de donde se extraen los datos #_public Indica que la vista es una vista pública. 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 7. Definiendo Conjuntos de Datos a través de MDX 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 Host Name: localhost Port: 7777 User Name: user Password: user Query Type: MDX Query 2. Crear un nuevo conjunto de datos (Data Set) llamado Ventas MDX con los siguientes parámetros Name: Ventas MDX Data Source: O3 Local MDX Data Set Type: O3 Data Set 3. Ingresar la siguiente consulta MDX para este nuevo conjunto de datos SELECT {[Measures].[Litros Vendidos], [Measures].[Venta Neta]} ON COLUMNS ,CROSSJOIN({[Vendedores].[Vendedor].members}, {[Vinos].[Vino].members}) ON ROWS FROM [Vinos] En esta consulta se genera una tabla de datos que contendrá: Una fila por cada Vino vendido por cada Distribuidor Para cada combinación de Vino con Distribuidor mostrará 2 columnas (las medidas Litros Vendidos y Venta Neta) Distribuidor Vino Litros Vendidos Venta Neta Distribuidor 1 Vino 1 10 1500 Distribuidor 1 Vino 2 15 2700 Distribuidor 2 Vino 1 13 1780 ... ... ... ... Distribuidor 3 Vino 3 12 720 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 Escribiendo consultas MDX Diseñando la forma del reporte Ahora que ya se definieron los datos que se utilizarán en el reporte, así como los mecanismos para obtenerlos, es posible diseñar la estructura del reporte distribuyendo los datos en la página. 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. Existen 3 tipos de contenedores 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: Iterar a través de todos los registros provenientes de un Conjunto de Datos Ubicar la información de una manera muy sencilla en un formato de filas y columnas 1. Active la Paleta (Pallete) La Paleta enumera todos los elementos que se pueden distribuir en un reporte Observar que el cuadrante de arriba a la izquierda contiene tres tab: Palette, Data Explorer, Library Explorer 2. Arrastre una tabla desde la paleta a la hoja donde se irá definiendo el reporte. Esta acción solicita la cantidad de columnas que tendrá la tabla y la cantidad de filas de detalle necesarias. Para este ejemplo se necesitan 4 columnas y 1 fila de detalle. 1. Active el Explorador de Datos (Data Explorer) El Explorador de Datos permite navegar por los datos disponibles para el reporte. En particular muestra las Fuentes de Datos y Conjuntos de Datos definidos en los pasos anteriores (O3 Local MDX y Ventas MDX respectivamente). 2. Expanda el Conjunto de Datos Ventas MDX definido para este reporte. Es posible ver los campos incluidos en dicho conjunto. 3. Arrastre cada uno de los campos para soltarlos sobre las celdas de detalle de la tabla (Detail Row). Esta acción irá poblando la tabla y agregando en la fila de encabezado un título para cada columna. Más tarde será posible cambiar estos encabezados. De esta forma sencilla queda definido el reporte en su formato más básico con los datos obtenidos desde un cubo de O3. 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) Ordenando los registros del reporte Cuando la información llega desde la consulta, ésta no necesariamente viene ordenada. Al momento de definir el reporte es posible indicar un criterio de ordenación de los datos diferente del establecido en la propia consulta o vista. Para esto se usa el editor de propiedades. 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 Es posible agregar varios campos al criterio de ordenamiento El resultado de aplicar el nuevo orden puede observarse viendo una vista preliminar del reporte. Agrupando registros del reporte Muchas veces es deseable construir reportes que agrupan un conjunto de registros para facilitar su lectura o para mostrar datos adicionales para cada grupo. 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. En el ejemplo generaremos un corte de control para cada Vendedor 1. 2. 3. 4. 5. Seleccione la tabla Seleccione el tab Groups del Editor de Propiedades para habilitar las opciones de agrupamiento Presione el botón Add para agregar un nuevo griterio de agrupamiento Ingrese Vendedores como nombre del grupo 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) 6. Acepte los cambios en el editor de grupos Esta acción agrega una nueva fila de encabezado y de pie para el nuevo grupo y coloca en el encabezado el campo correspondiente al criterio de agrupamiento, en este caso el campo Vendedores_Vendedor 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 Agregando Totales Parciales El paso siguiente consiste en agregar los subtotales por Vendedor tanto para los Litros Vendidos como para la Venta Neta 1. Seleccionar la Paleta (Palette) 2. Arrastrar una Agregación (Aggregation) en la fila correspondiente al pie del grupo (Group Footer Row) justo debajo de Litros Vendidos Esto despliega el Editor de Agregaciones donde se define un nuevo lazo (binding) para el subtotal deseado. Los binding permiten asignarle un nombre a un dato cualquiera o cálculo lo cual facilita la tarea de ubicarlo luego en el reporte 3. Ingresar Subtotal Litros Vendidos como nombre del binding. 4. Seleccionar el campo Litros Vendidos como campo de datos (Data Field) 5. Seleccionar el grupo Vendedores como grupo de agregación (Aggregate On) 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 Alinear las celdas de datos Formateo de elementos numéricos Formateo de los encabezados Ajustes a la fuente utilizada 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 Títulos en el encabezado de la tabla Nombre del Vendedor en el encabezado del grupo de Vendedores Nombre del Vino en la fila de detalle Valores numéricos correspondientes a Cantidad de Litros y Venta Neta en la fila de detalle Subtotales para los valores numéricos Esta clasificación sugiere la necesidad de contar con estilos diferentes para cada caso. Estilo para el Encabezado de la Tabla 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 7. Acepte los cambios para cerrar el Editor de Estilos Con esto se ha creado el nuevo estilo Encabezado el cual podrá asignarse a cualquier elemento del reporte 8. Seleccione la etiqueta Vinos_Vino del encabezado de la tabla 9. En el Editor de Propiedades de dicha etiqueta, en el grupo General, seleccione el estilo (style) recién creado El reporte se ajustará para formatear la etiqueta de acuerdo al formato del estilo 10. Asigne el estilo a las etiquetas Litros Vendidos y Venta Neta Estilo para el Encabezado del Grupo de Vendedores 1. Cree un nuevo estilo llamado Encabezado Grupo 2. Seleccione el grupo de atributos Background y defina como color de fondo RGB(240,240,240) 3. Asigne este estilo a la etiqueta correspondiente al nombre del Vendedor Vendedores_Vendedor Hasta el momento el reporte debería verse similar a la siguiente figura 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) 1. Seleccione la celda donde se encuentra la etiqueta Vendedores_Vendedor 1. Notar que para seleccionar la celda debe hacerse click en el espacio disponible entre las líneas de división de la tabla y el borde de la etiqueta. Verificar en el Editor de Propiedades que se ha seleccionado la celda y no la etiqueta. El título de dicho editor debería decir Properties Editor - Cell y no Properties Editor - Data 2. Seleccione el resto de las celdas de la fila de encabezado de grupo mientras se mantiene presionada la tecla SHIFT La selección se irá agrandando hasta abarcar todas las celdas de dicha fila 3. Presione el botón derecho del mouse y seleccione la opción Merge Cells Las celdas de la fila de encabezado del grupo se juntarán de modo que quede una sola que abarque el ancho total de la tabla. El estilo con el color de fondo deja más en evidencia esto Estilo para valores numéricos de detalle 1. 2. 3. 4. 5. Cree un nuevo estilo llamado Valor Seleccione el grupo de propiedades Text Block y defina la alineación a la derecha Seleccione el grupo de propiedades Format Number Elija el formato predefinido Fixed con 2 decimales y active el checkbox del separador de miles Asigne este nuevo estilo a los elementos Litros Vendidos y Venta Neta de la fila de detalle Estilo para los subtotales 1. 2. 3. 4. Cree un nuevo estilo llamado Subtotal Ajuste la alineación a a la derecha y el formato numérico similar al del estilo Valor Defina un borde superior que de la idea de totalización Asigne este nuevo estilo a los subtotales de Litros Vendidos y Venta Neta Indentación de la fila de detalle 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 El reporte formateado debería verse más o menos así 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. 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. La parametrización es muy útil para trabajar con fechas, el siguiente ejemplo muestra como crear parámetros que manejen fechas. 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. Creando un nuevo parámetro 1. Desde el panel Data Explorer presionar el botón derecho del mouse sobre el elemento Report Parameters 2. Crear un nuevo parámetro 2. Esta acción abre el editor de parámetros 3. Indique los siguientes datos del parámetro Name: El nombre del parámetro En nuestro caso Vendedor Data type: Tipo de dato del parámetro En nuestro caso String Display Type: Forma de mostrar los datos En nuestro caso List Box 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 Data Source O3 Local MDX Data Set Type O3 Data Set 7. Ingrese la siguiente consulta MDX en la especificación del Data Set SELECT {[Vendedores].[Vendedor].members} ON COLUMNS FROM [Vinos] Para más detalles sobre la definición de un Data Set consultar la sección Especificando los datos a utilizar 8. Acepte los cambios del editor del Data Set 9. Complete los datos del parámetro con la nueva información: Data Set: Conjunto de datos al cual está asociado el parámetro. En nuestro caso usaremos el conjunto de datos Vendedores 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 10. Finalmente el editor debería mostrar lo siguiente 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 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 Name: El nombre del parámetro En nuestro caso Vendedor Data Type: Tipo del parámetro En nuesto caso no requiere modificación Direction: Dirección del parámetro (Entrada o Salida) En nuestro caso usaremos input Default Value: Valor que tendrá el parámetro por defecto En nuestro caso N/A Linked To Report Parameter: Parámetro al cual está asociado En nuestro caso Vendedor 6. Finalmente resta ejecutar el reporte para ver cómo se filtran los datos para mostrar únicamente las ventas del 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. Creando Parámetros en Cascada Nota Se recomienda haber leido antes la sección Parametrización Simple 1. Cree un conjunto de datos (Data Set) para construir la lista de Canales Name: Canales Data Source: O3 Local MDX Data Set Type: O3 Data Set 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 Data Source: O3 Local MDX Data Set Type: O3 Data Set Query SELECT {[Vendedores].?.children} ON COLUMNS FROM [Vinos] El signo de interrogación será luego asociado al parámetro que identifique el Canal. Ignorar cualquier mensaje de error que se muestre debido a que no puede resolver el parámetro 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 5. Ingrese Vendedores Del Canal como nombre del Parámetro 6. Seleccione Multiple Data Set Se utilizará un data set para cada paso del parámetro (los data sets creados en los pasos anteriores) 7. Presione el botón Add para agregar un parámetro a la cascada. 8. Ingrese los siguientes datos para el primer Parámetro: Name: Canal Data Set: Canales Value: unique_name Display Text: label 9. Presione el botón Add para agregar un segundo parámetro a la cascada. 10. Ingrese los siguientes datos para el segundo Parámetro: Name: VendedorDelCanal Data Set: VendedoresDelCanal Value: unique_name Display Text: label 11. El editor del parámetro en cascada debería quedar como se muestra 11. 12. Para continuar presione OK. Relacionando los Parámetros de la Cascada 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. 1. Editar el Conjunto de Datos (Data Set) VendedoresDelCanal 2. Agregar un parámetro tal como se muestra a continuación Probando lo realizado Para probar lo realizado cree un nuevo Data Set con los siguientes datos: * Name: Ventas por Canal y Vendedor * Data Source: O3 MDX View * Data Set Type: O3 Data Set * Query La siguiente expresion en MDX: SELECT {[Vendedores].?} ON COLUMNS, {[Vinos].[Vino].members} ON ROWS FROM [Vinos] WHERE Measures.[Litros Vendidos] 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 Seleccione Preview y aparecerá la siguiente pantalla: En Canal aparecerán todos los canales de vendedores del cubo de Vinos, seleccione un canal y automáticamente se actualidará Vendedor Por Canal. En Vendedor Por Canal aparecerán todos los vendedores del canal seleccionado, seleccione un vendedor y presione OK para ver el detalle de los litros de vinos vendidos por ese vendedor. Por ejemplo si elige como canal "Venta Directa" y como vendedor "Federico Moreira" el repotre mostrará: Vino Litros Vendidos Cabernet Sauvignon, Merlot 4500 Cabernet, Tannat, Merlot 0 Chenin, Gewurzt 2250 ... ... 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. Parametrización con Fechas Esta sección describe como agregar un parámetros que manejen fechas. El ejemplo terminado puede consultarse aquí. Creando Parámetros sobre Fechas 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: SELECT {[Fecha].[Año].members} ON COLUMNS FROM [Vinos] Una vez definido el Data Set se podrá visulizar el mismo desde la vista Data Explorer (Explorador de datos) del O3Reporting: Para continuar realice los siguientes pasos: 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: Name: El nombre del parámetro En nuestro caso Año Data Set: Conjunto de datos al cual está asociado el parámetro. En nuestro caso usaremos el conjunto de datos Años Value: Valor que tendrá el parámetro. En nuestro caso usaremos unique_name Display Text: Texto a mostrar en el repotye En nuestro caso label 4. Presione OK para continuar, aparecerá la siguiente pantalla (Recuerde que Multiple Data Set debe estar seleccionado): 5. Presione OK para continuar. 6. Cree un conjunto de datos (Data Set) que contenga la siguiente información: * Name: Meses * Data Source: O3 MDX View * Data Set Type: O3 Data Set * Query La siguiente expresion en MDX SELECT Descendants([Fecha].?, [Fecha].[Mes]) ON COLUMNS FROM [Vinos] 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: 7. 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: Name: El nombre del parámetro En nuestro caso Mes Data Set: Conjunto de datos al cual está asociado el parámetro. En nuestro caso usaremos el conjunto de datos Meses Value: Valor que tendrá el parámetro. En nuestro caso usaremos unique_name Display Text: Texto a mostrar en el repotye En nuestro caso label 11. Para continuar presione OK. Aparecerá la siguiente pantalla: 12. Presione OK para continuar. La vista Data Explorer (Explorador de datos) de su eclipse deberá aparecer de la siguiente manera: 13. Cree un conjunto de datos (Data Set) que contenga la siguiente información: * Name: Ventas por Vendedor y Meses * Data Source: O3 MDX View * Data Set Type: O3 Data Set * Query La siguiente expresion en MDX: 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á: Vino Litros Vendidos G & P Corp. 5850 Link S.R.L. 1800 Mykonos 0 ... ... Susana Garcia 2700 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. 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. 1. Desde el menú File, seleccionar la opción Exportar 2. Seleccionar la opción Exportar a IStore. Esto permite que el reporte sea generado en el servidor y quede accesible para los usuarios 2. Tutorial O3 ReportCast Funcionamiento General O3 Performance Suite ofrece un servicio de entrega periódica y automática de reportes, que permite distribuir información en forma ágil a los destinatarios con la frecuencias necesaria para cada reporte. Este nuevo componente de O3 permite la automatización de la distribución de información por email mediante una interface gráfica dónde se controla un potente mecanismo de determinación de la oportunidad en que debe generarse la información. Además, gracias a la declaración de instancias de proceso es posible llevar un registro los reportes generados, determinar si se presentaron situaciones que impidieron la generación (base de datos no disponible), controlar los reintentos e intervenir manualmente para generar y distribuir un reporte. Este Tutorial El objetivo de este tutorial es presentar el módulo O3 ReportCast 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. Activando el envío automático de reportes (ReportCast) La utilización del ReportCast requiere la ejecución de los siguientes pasos: 1. Declarar una Programación Consiste en una declaración de la frecuencia con que se deberá ejecutar una tarea mediante una interfaz gráfica donde el administrador puede crearlas y asociarles un nombre. 2. Agendar un Reporte a una Programación Para cada Reporte, se asocia al mismo una programación. Al mismo tiempo se indican los parámetros del envío como son el destinatario y el asunto del mail. Nota El envío de reportes por mail requiere configurar correctamente el mailer de JBoss. Instrucciones detalladas de cómo realizar esto pueden encontrarse aquí. Declarando la Programación de un Reporte Agendando el envío de un Reporte Configurar envío de reportes en diferentes formatos Declarando la Programación de un Reporte Tutorial de Envío Automático de Reportes Declarando la Programación de un Reporte Agendando el envío de un Reporte Configurar envío de reportes en diferentes formatos La programación de un Reporte utiliza un mecanismo general del servidor de O3 que permite agendar diferentes tareas para su ejecución automática. Este mecanismo está basado en procesos de workflow lo cual facilita su monitoreo mantenimiento y ejecución. Estas Programaciones se realizan desde el O3 Server Administrator símplemente declarando la periodicidad de la tarea. Para más detalles consultar Declarando Programaciones Agendando el envío de un Reporte Tutorial de Envío Automático de Reportes Declarando la Programación de un Reporte Agendando el envío de un Reporte Configurar envío de reportes en diferentes formatos Una vez definida la Programación que declara la frecuencia con que se enviarán los reportes, es posible agendarlos para su distribución automática. 1. Ingresar al O3 Server Administrator con una cuenta de Administrador 2. Seleccionar el servicio de Distribución de Reportes Esto desplegará una pantalla similar a la siguiente 3. Presionar el botón Agregar para agendar un nuevo reporte Esto despliega una pantalla similar a la siguiente 4. 5. 6. 7. Seleccionar el reporte que se desea agendar de la lista desplegable Seleccionar la Programación deseada Ingresar los parámetros del envío como son Destinatario, Copias y Asunto Opcionalmente se podría modificar el Proceso utilizado para el envío de reportes. A los efectos de este tutorial se utiliza el proceso Por Defecto 8. Habilitar esta nueva tarea programada y Aceptar los cambios Con estas modificaciones el gestor de tareas programadas del O3 Server iniciará los procesos de workflow necesarios. Configurar envío de reportes en diferentes formatos Está modificación se aplica a la versión 5.4 y anteriores. Las versiones posteriores ya implementan este cambio. Contexto La idea es permitir configurar la distribución de reportes automática en diferentes formatos admitos por BIRT. Pre condiciones El envío de reportes por mail requiere configurar correctamente el mailer de JBoss (consultar aquí). Declarar la Programación de un Reporte (consultar aquí). Agendar el envío de un Reporte (consultar aquí). Configurar formato 1. Bajar el servidor. 2. Editar archivos StaticComponents.xml ubicado en <o3-install>/jboss/server/default/ideasoft-jwf/config/ agregando al nodo <config> (según el formato en el cual se desee enviar el reporte), lo siguiente: Pdf (configuración por defecto): <urlType name="birtPDF" url="http://localhost:8080/o3report/preview?userLogin=${userLogin}&amp;logoutOnEndRequest=true&amp;userTicket=${ Excel: <urlType name="birtXLS" url="http://localhost:8080/o3report/preview?userLogin=${userLogin}&amp;logoutOnEndRequest=true&amp;userTicket=${ Word: <urlType name="birtDOC" url="http://localhost:8080/o3report/preview?userLogin=${userLogin}&amp;logoutOnEndRequest=true&amp;userTicket=${ Power Point: <urlType name="birtPPT" url="http://localhost:8080/o3report/preview?userLogin=${userLogin}&amp;logoutOnEndRequest=true&amp;userTicket=${ Por ejemplo, si se configuraran los formatos pdf, xls, doc, ppt, el nodo <config> del archivo StaticComponents.xml quedaría de la siguiente manera: ... <config> <urlType name="birtPDF" url="http://localhost:8080/o3report/preview?userLogin=${userLogin}&amp;logoutOnEndRequest=true&amp;userTicket=${ name="birtXLS" url="http://localhost:8080/o3report/preview?userLogin=${userLogin}&amp;logoutOnEndRequest=true&amp;userTicket=${ name="birtDOC" url="http://localhost:8080/o3report/preview?userLogin=${userLogin}&amp;logoutOnEndRequest=true&amp;userTicket=${ name="birtPPT" url="http://localhost:8080/o3report/preview?userLogin=${userLogin}&amp;logoutOnEndRequest=true&amp;userTicket=${ name="birt" url="http://localhost:8080/o3report/preview?userLogin=${userLogin}&amp;logoutOnEndRequest=true&amp;userTicket=${ 3. Guardar el archivo. 4. Subir el servidor. Modificar Proceso 1. Ejecutar O3 Browser. 2. Dirigirse a Archivos -> Procesos -> Obtener Definición del Servidor 3. Loguearse al servidor ingresando usuario y contraseña. 4. Seleccionar Report Cast y presionar Aceptar. Se despliega el proceso: 5. Seleccionar Send Mail y hacer doble click. 6. Seleccionar la pestaña Completar del primer nivel, y Después de Completar del segundo nivel. 7. Modificar el cuerpo del mail, según el formato definido previamente en StaticComponents.xml Pdf (configuración por defecto): $attachments.add($http.get('birtPDF', $!attrs.reportName, $!attrs.reportUser, $!attrs.reportParams), '.pdf') Excel: $attachments.add($http.get('birtXLS', $!attrs.reportName, $!attrs.reportUser, $!attrs.reportParams), '.xls') Word: $attachments.add($http.get('birtDOC', $!attrs.reportName, $!attrs.reportUser, $!attrs.reportParams), '.doc') Power Point: $attachments.add($http.get('birtPPT', $!attrs.reportName, $!attrs.reportUser, $!attrs.reportParams), '.ppt') 8. Guardar el cambio presionando Aceptar. 9. Se debe enviar la definición al servidor. Para ello dirigirse al menú Publicación -> Enviar Definición al Servidor 10. Presionar Aceptar. El proceso será publicado en estado Testing. 11. Pasar proceso a producción. Para ello dirigirse al menú Publicación -> Cambiar Estado Seleccionar Production y presionar Aceptar. Iniciar proceso 1. Ejecutar WAdmin. Para ello dirigirse al menú Archivo -> Procesos -> WAdmin Este componente nos permite ver todos los procesos y sus estados respectivos. 2. Hacer click en Buscar. Se mostrarán la lista de procesos en producción. 3. Seleccionar CronBuilder, dirigirse al menú Administración -> Ir a otra Actividad. 4. Seleccionar de la lista de selección Show attrs y presionar Aceptar. CronBuilder se actualizará, comenzando a ejecutar ReportCast automáticamente. Tutorial Personalización del formato de fecha Personalización del formato de fecha En la versión 5.0 de O3 se permite personalizar los valores de fechas. Dicha personalización puede ser realizada en el momento de la definición del modelo multidimensional a través del componente O3Studio. El usuario puede seleccionar de la lista cualquiera de los patrones ofrecidos. O de lo contrario puede especificar el formato directamente escribiendo en el campo "patrón" utilizando la notación adecuada. Además el usuario tiene libertad de combinar los distintos patrones, definiendo de esa forma el formato de su agrado. La siguiente figura muestra un ejemplo de personalización del nivel día de la dimensión fecha. Figura 1: personalización del nivel día durante la definición del modelo multidimensional Los patrones que se presentan a continuación son predefinidos y están disponibles para ser utilizados tanto en O3Studio como en O3Browser. Esta lista complementa a los patrones definidos por Java (ver javadoc de java.text.SimpleDate) que también puede ser utilizados Notación y significado de los patrones: Patrón Descripción qq Número de trimestre qqq Palabra trimestre (internacionalizada) y número de trimestre ss Número de semestre sss Palabra semestre (internacionalizada) y número de semestre ww www wq Número de semana dentro del mes Palabra semana (internacionalizada) y número de semana dentro del mes Número de semana dentro del trimestre wwq ws wws wy wwy Palabra semana (internacionalizada) y número de semana dentro del trimestre Número de semana dentro del semestre Palabra semana (internacionalizada) y número de semana dentro del semestre Número de semana dentro del año Palabra semana (internacionalizada) y número de semana dentro del año Lista de patrones predefinidos La siguiente lista se ofrece al momento de definir el nivel jerárquico correspondiente en una dimensión de tipo fecha: Para el nivel Año: yyyy yy Para el nivel Semestre: sss / yyyy sss / yy sss ss Para el nivel Trimestre: qqq / yyyy qqq / yy qqq qq Para el nivel Mes: MMM / yyyy MMMM / yyyy MM / yyyy MMM / yy MMMM / yy MM / yy Para el nivel Semana: www wwq wws wwy ww wq ws wy Para el nivel Día: EEE dd / MMM EEE dd EEEE dd dd dd/MM/yyyy MM/dd/yyyy Importante Calculado por O3: la semana comienza a partir del lunes. En el caso de colocar el patrón w (dentro del año) ó W (dentro del mes) (los cuales son resueltos por Java directamente) la semana comienza el domingo ó el lunes dependiendo del idioma: user.language=es comienza el lunes user.language=en comienza el domingo Tutorial Sincronización Tutorial de Sincronización Motivación Brindar una solución de análisis para usuarios desconectados. En cualquier momento los usuarios pueden generar la información que necesitan para su análisis en un ambiente desconectado de la organización, seleccionando el conjunto de información que le es de interés en cada oportunidad. Alcance Se propone la sincronización automática del servidor para copiar en el equipo personal de trabajo los elementos habituales de consulta, respetando la seguridad definida para el acceso a la información. La sincronización incluye los siguientes elementos de análisis: datamarts y vistas tableros de control El usuario administrador de O3 determinará para cada rol, los elementos de análisis que se podrán sincronizar para consultar en forma desconectada. Luego los usuarios se conectan al servidor y seleccionan la lista de componentes que desean sincronizar. En cada operación el servidor chequea antes de comenzar la sincronización si hay elementos que no fueron actualizados desde la copia anterior e informa el resultado, desmarcando aquellos componentes que se encuentran actualizados en la copia local. Actualmente, en caso que el datamart a sincronizar exista localmente (con igual nombre), se pierden sus vistas y perfiles (queda el datamart asociado a las vistas y perfiles del servidor). Los datamarts, reglas y scorecards se sobreescriben sin solicitar confirmación (pero no se pierden los datamarts, reglas y scorecards definidos localmente) La sincronización es únicamente desde servidor hacia ambiente local (no es posible actualmente subir elementos al servidor). Configuración para habilitar la sincronización El usuario administrador de O3 debe seleccionar los roles asociados a cada cubo que podrán realizar la operación de sincronización. Para esto debe conectarse al O3 Server Administrator y en la solapa General de cada uno de los cubos publicados completar el check box de la opción "Puede sincronizar", como se muestra en la siguiente figura: En este ejemplo se indica que los usuarios del rol Manager podrán sincronizar los elementos de análisis del datamart Demo. Procedimiento de sincronización En todo momento los usuarios habilitados para realizar sincronización de información pueden ejecutar el siguiente procedimiento, dejando por resultado una copia de la información deseada, guardada localmente en su equipo para su posterior consulta en forma desconectada. Se describe a continuación los pasos necesarios para sincronizar la información: 1. 1. Iniciar la operación de sincronización, para ello se debe seleccionar desde el compnente O3Browser: Archivo --> Sincronizar, se solicita login al O3Server (si no se había conectado previamente al servidor) y a continuación login al server que corre en el cliente. El usuario y password a utilizar por defecto son: localuser/user. A continuación se abre la ventana de sincronización: 2. 3. 4. 5. En esta ventana se despliegan en forma de árbol, la lista de componentes que se permiten sincronizar. Aparecen seleccionados aquellos que no se encuentran en el equipo destino, o que en caso de encontrarse ya en el equipo, tienen fecha de actualización anterior a la que figura en el servidor al momento de realizar la sincronización. El usuario debe seleccionar el conjunto de componentes que desea sincronizar. Sobre la derecha se tiene un panel de Descripcion de los elementos seleccionados. En la parte inferior de la ventana se muestra la barra de avance que indica la fase de sincronización en la que se encuentra. En este momento el usuario puede realizar alguna de las 3 acciones posibles: 'Ejecutar' o 'Cancelar' la sincronización, y 'Cerrar' la ventana. Como resultado de la sincronización: Los datamarts seleccionados se almacenan dentro de la instalación de O3 en <o3>/cubes. Para cada datamart seleccionado se sincronizarán las reglas que tenga asociadas, almacenandose en en <o3>\server\istore\rules. Lo mismo ocurre con las vistas, se almacenan en las carpetas correspondientes, Public, Roles, etc. bajo la carpeta <o3>/server. Los tableros se almacenan también dentro de la instalación de O3 en \server\istore\scorecard, creándose una carpeta por cada tablero. Desde este momento el usuario tiene disponible toda la información para realizar el análisis en forma local. Al finalizar la sincronización se consulta al usuario si se quiere pasar a trabajar en modo desconectado. De todas formas se puede seleccionar en el menú Archivo->Modo desconectado. Para abrir cualquiera de los elementos de análisis del equipo, es necesario que se conecte al servidor local, tal como lo hizo al momento de iniciar la sincronización. Toda modificación a las vistas, reglas y tableros existentes quedará almacenada en <o3>/server. Web Services Data Sources Web Services Data Sources Este tutorial explica mediante un ejemplo cómo utilizar web services (WS) como fuente de datos de un modelo. 1. Ir a Fuentes de datos, Web Services Data Source, Agregar WebService. 2. En la solapa Descripción indicar nombre y descripción del WS. 3. En la solapa General: a. Indicar si se utilizará para construir dimensión y si se debe verificar la fuente antes de construir. b. Indicar la ruta completa del archivo XML que el WS devuelve como respuesta (XML request). c. Dependiendo de la estructura del archivo XML puede que se requiera leer mas de una tupla por registro, en este caso indicar el número de tuplas por registro. d. 3. d. En XPath Principal se muestra la estructura del archivo XML en forma de árbol. Seleccionar el elemento (correspondiente al tag) que se tomará como referencia para direccionar los campos. Esta será la expresión XPath que se visualiza con formato /ItemSearchResponse/Items/Item, por ejemplo, donde ItemSearchResponse es el tag inicial del archivo XML, le siguen a continuación el o los tags hijos. 4. En la solapa SOAP: a. Wsdl: ingresar la url del wsdl. b. Service: en este combo editable se debe ingresar o seleccionar el nombre del servicio. c. Service Port: en este combo editable se debe ingresar o seleccionar el puerto del servicio. d. Namespace: ingresar el namespace del WS. e. Iterativo: seleccionar en caso de que se quiera invocar iterativamente al WS, es decir llamar varias veces al WS hasta que no devuelva nada. f. Ingresar el XML Request. Si se desconocen el service, service port y namespace, se puede presionar el botón a la derecha de wsdl, que completará estos campos de acuerdo al wsdl ingresado. Existen dos variables que se pueden utilizar opcionalmente en el cuerpo del xml: para distinguir una llamada de la otra (cuando en se selecciona el check iterativo) se pueden utilizar unas expresiones en el XML del request, lo que se puede usar es: ${page} o ${page_index}, ${page}comienza en 1, ${page_index}en 0. 5. En la solapa Campos se tiene nuevamente el arbol de tags del archivo, donde se deben seleccionar los campos a utilizar. En la lista se 5. tendrá: a. Los atributos del tag, que son los que tienen @ como prefijo. b. Los tags hijos, sin prefijos. 6. El tipo de dato asignado inicialmente para todos los campos es String (al igual que cuando se utilizan archivos de texto como fuentes de datos, el usuario debe cambiar al tipo de dato correcto para cada campo). Se puede clickear Vista previa para visualizar los primeros datos.