Definiendo el O3 Query

El procedimiento de definición de consultas detalladas a la base de datos requiere realizar los siguientes pasos:

  • Definición de la conexión a la base de datos.

  • Especificación de los datos que se desean obtener de la base de datos como resultado de la consulta y su relación con las dimensiones del datamart.

  • Filtros a utilizar en la Consulta Drill Through entre el Datamart y el O3Query

  • Definición del archivo de configuración requerido para asociar el datamart con la o las consultas definidas.

Estas definiciones se desarrollan en ambiente desktop con el O3 Browser y son almacenadas en primera instancia localmente donde se ejecuta el componente O3 Browser, para luego ser publicadas en el servidor y ser consultadas en la web.

Definiendo Conexiones a Bases de Datos

La configuración a la base de datos depende del DBMS y del driver utilizado, es decir si se utiliza un manejador de tipo ODBC ó JDBC.

Para las conexiones que utilicen ODBC se debe definir la correspondiente fuente de datos del sistema desde el panel de control de Windows.

Para las conexiones que utilicen drivers JDBC, se deben realizar en primera instancia, modificaciones en la instalación de O3BI y de acuerdo a la Base de Datos. Estas modificaciones se indican en documento aparte, ya que luego no hay que realizarlas nuevamente.

Las definiciones de conexiones a Bases de Datos son distintas para el uso local/desarrollo como para el uso por la web (Ambiente de Producción)

Definición Conexiones en Ambiente Desktop

Las conexiones se definen a través de la opción "Editar Conexiones de Bases de Datos" de la entrada "Edición" del menú "Archivo" de O3 Browser.

Luego elegir Desde Repositorio Local, no elegir Desde Repositorio Remoto porque se destruye el archivo de configuración para el ambiente web.

En el Panel de la Izquierda se observan las Conexiones Definidas y a la derecha su configuración.

Con la instalación vienen definidas tres conexiones de ejemplo.

Para definir una nueva conexión a la base de datos se deben seguir los siguientes pasos:

  • Seleccionar con el botón derecho del ratón la etiqueta "Conexiones" para desplegar el menú.

  • Elegir la opción "Nueva Conexión" de la entrada "Agregar" del menú.

  • Seleccionar la nueva conexión para desplegar el panel derecho y completar sus propiedades.

Campo

JDBC

ODBC (en desuso)

Campo

JDBC

ODBC (en desuso)

Nombre

Es el nombre dado a la conexión. Se referencia desde la definición de la consulta.

Es el nombre dado a la conexión. Se referencia desde la definición de la consulta.

Usuario

Usuario con permisos de consulta sobre la base de datos

Usuario con permisos de consulta sobre la base de datos

Clave

Clave del usuario con permisos de consulta sobre la base de datos

Clave del usuario con permisos de consulta sobre la base de datos

Controlador

sun.jdbc.odbc.JdbcOdbcDriver

Clase del controlador. La misma es especificada en la documentación del controlador utilizado. (Ver Drivers JDBC más utilizados)

Tipo de Driver

SQL

SQL

URL

URL a la base de datos deseada. Depende del controlador utilizado y figura en su documentación

jdbc:odbc:<DATASOURCE>. Donde DATASOURCE es la Fuente ODBC creada.

  • Probar la conexión a la base de datos, presionando el botón "Verificar".
    El mensaje "Conexión realizada" indica que la conexión ha sido definida exitosamente.

     

  • Guardar los cambios con el botón "Grabar".

Estas configuraciones quedan guardadas en el archivo <O3>\config\query\edf\config\connections.xml

 

Además de agregar una nueva conexión en el panel de conexiones, es posible: modificar una conexión existente y/o eliminar una conexión.

Si se desea modificar una conexión existente se debe:

  1. Seleccionar la conexión que se desea modificar.

  2. Modificar las propiedades de la conexión

  3. Probar la conexión a la base de datos, presionando el botón "Verificar".
    El mensaje "Conexión realizada" indica que la conexión ha sido definida exitosamente.

  4. Guardar los cambios con el botón "Grabar".

Si se desea eliminar una conexión existente se debe:

  1. Seleccionar con el botón derecho del ratón la conexión que se desea eliminar para abrir el menú.

  2. Elegir la opción "Borrar".

  3. Guardar los cambios con el botón "Grabar".

Definición de Conexiones en el O3BI Server (Ambiente Web)

Esta configuración la debemos realizar en la instalación del Servidor de O3BI, y en forma manual.

En Ambiente Web las conexiones definidas por el panel del O3Browser no nos sirven, debemos desarrollar datasource para ello.

Estos datasource los vamos a definir editando el archivo connections.xml que se encuentra en <O3>\server\istore\query\config

El siguiente es un ejemplo para definir el datasource para el Cubo de Vinos.

<?xml version="1.0" encoding="UTF-8"?> <connectionMapping xmlns="connectionMapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.isoft.com.uy/schemas/edf/ConnectionMapping.xsd"> <dataSource nameJNDI="java:jboss/datasources/Vinos-ds" schema="Vinos"/> </connectionMapping>

Prestar atención que se hace referencia a un datasource llamado Vinos-ds, para ello debemos crear un archivo en <O3>\jboss\standalone\deployments, donde definimos la conección con la fuente de datos, con el nombre <IdentificaciónalaBasedeDatos>-ds.xml .

Y también se hace referencia a un schema (Vinos), que es la consulta definida.

<?xml version="1.0" encoding="UTF-8"?> <datasources> <datasource jndi-name="java:jboss/datasources/Vinos-ds" pool-name="Vinos-ds" enabled="true" jta="true" use-java-context="true" use-ccm="true"> <connection-url> jdbc:derby:c:/ideasoft/o3bi/files/data/Vinos </connection-url> <driver> derby </driver> <security> <user-name>sa</user-name> <password>sa</password> </security> </datasource> </datasources>

Definiendo Consultas

Las consultas realizadas a la base de datos para obtener información más detallada que el contenido en el modelo multidimensional se definen a partir de tablas o vistas existentes en el DBMS.

Las vistas se utilizan en aquellos casos en que la consulta involucre campos de más de una tabla; ya que sólo podemos relacionar nuestra consulta de O3BI a un objeto.

La consulta se puede generar y guardar tanto en ambiente local como en el repositorio del O3BI Server. Es aconsejable primero generar la consulta localmente, como si fuera un ambiente de desarrollo); y luego guardarla en el repositorio de O3BI.

La configuración de los elementos de la consulta consiste en:

  • Identificar la consulta con un nombre apropiado

  • Asociar el nombre de la tabla o vista sobre la cual se realiza la consulta

  • Definir los campos de la consulta que se desean visualizar como columnas en el panel del O3 Query Studio.

  • Definir los campos que se desean utilizar como filtros en la consulta, permitiendo al usuario restringir el resultado de la misma a los valores expresados en éstos.

Desde el menú Archivo de O3 Browser podemos acceder a Editar y generar una Nueva Consulta.

Editando la consulta de Vinos que viene con la instalación, podemos tomarla como ejemplo para análisis y definición de otras.

La ventana de configuración de las consultas presenta dos paneles:

  • Panel de definiciones (panel izquierdo)

  • Panel de propiedades (panel derecho)

El panel de definiciones contiene un primer nodo con la etiqueta "Consulta" cuyas propiedades definen la consulta a la base de datos.

Los filtros se agregan al nodo de etiqueta "Filtros" del panel de definiciones. Sus atributos se definen en el panel de propiedades y se describen más adelante en esta sección.

Definiendo la consulta

Las propiedades de la consulta definen el conjunto de registros que se deben mostrar al momento de solicitar la consulta detallada en O3 Browser, así como los campos que interesan mostrar como resultado de la misma.

Para definir una consulta se debe completar la siguiente información:

  • Nombre: Es un nombre arbitrario para la consulta

  • Esquema: Es la conexión a la base de datos que se necesita utilizar para acceder a los datos. Se debe seleccionar de la lista de conexiones disponibles. Las conexiones disponibles son aquellas definidas previamente.

  • Nombre de la Tabla: Es el nombre de la tabla o vista de la base de datos sobre la que se realiza la consulta.

  • Condición: Define la cláusula WHERE de la consulta

  • Cubo: Es el datamart al cuál estará asociada la consulta detallada.
    Es importante seleccionar el datamart para permitir definir filtros asociados a dimensiones del mismo.
    El botón que se encuentra a la derecha permite seleccionar un datamart del sistema de archivos o remoto.
    La asociación reflejada en este panel se realiza únicamente con el objetivo de expresar la relación existente entre los filtros de la consulta y las dimensiones del datamart.

  • Campos disponibles: Definen los campos que se desean mostrar en la consulta detallada.
    Para ello se deben especificar los siguientes datos:

    • Nombre: es el nombre del campo definido en la propia base de datos. No se puede modificar.

    • Alias: es la etiqueta del campo en el panel de la consulta detallada.

    • Tipo: es el tipo de dato del campo.

  • Botón Agregar Campo: Permite agregar manualmente un campo. Para ello deben definirse los 3 datos descriptos anteriormente.

  • Botón Borrar Campo: Elimina el campo seleccionado. En caso de no haber seleccionado ningún campo, se elimina el último.

  • Botón Autollenado: Define automáticamente los "Campos disponibles" a partir de la consulta especificada, es decir que define como campos disponibles todos aquellos campos presentes en la tabla o vista definida anteriormente.

  • Botón Guardar: Guarda los cambios realizados en la configuración de la consulta, tanto en las propiedades como en los filtros.
    Las definiciones se guardan en un archivo XML.

  • Botón Cambiar Repositorio: Permite cambiar el repositorio entre local y remoto, para guardar el O3 Query en el otro destino y con otro nombre.

Para crear una nueva consulta se deben seguir los siguientes pasos:

  1. Ir a menú Herramientas, Componentes, Query y abrir la opción Nueva Consulta. O Archivo, Nuevo, Nueva Consulta

  2. Definir las propiedades de la consulta. Esto es completar cada uno de los campos descriptos anteriormente.

  3. Guardar las propiedades con el botón "Guardar"

IMPORTANTE
Al momento de Guardar o de Cambiar de Repositorio se borra el nombre de la Tabla/Vista definida en la consulta. Generando dos situaciones

  1. Si no se completa nuevamente la información de la Tabla/Vista y se realizan modificaciones a la Consulta y se graba, ésta no va a tener el vínculo con la Tabla/Vista y no se ejecutará el O3Query.

  2. En caso de completar nuevamente el nombre de la Tabla/Vista, aparecerá una ventana consultando si desean autollenar. Se debe indicar que no y continuar el desarrollo.

Si se desea modificar una consulta definida previamente, es necesario que la conexión a la base de datos utilizada por la consulta esté disponible.

Para modificar una consulta ya existente se deben seguir los siguientes pasos:

  1. Ir a menúHerramientas, Componentes, Query y abrir la opción Editar Consulta. O Archivo, Editar , Editar Consulta

  2. Elegir a través del diálogo de apertura, la consulta deseada.

  3. Modificar las propiedades deseadas de la consulta.

  4. Salvar los cambios con el botón "Guardar"

Definiendo Filtros para la Consulta

Los filtros de la consulta son condiciones que se imponen sobre determinados campos para restringir el conjunto de resultado de la consulta.

En general los campos definidos como filtros se relacionan con dimensiones del modelo multidimensional para poder sincronizar las consultas realizadas en el cubo con el resultado detallado de la consulta a la base de datos. En este caso, se asocia el filtro a un determinado nivel de la dimensión del modelo multidimensional. A medida que se navega en el cubo, la consulta detallada se actualiza aplicando restricciones sobre los mismos valores filtrados en el cubo de O3.

Sin embargo pueden definirse filtros que no estén relacionados con dimensiones, lo que permite restringir el resultado de la consulta a la base de datos desde el propio panel de la consulta. Esto puede ser de utilidad para agregar algún dato no incluido en el modelo multidimensional que sea relevante en aquellos casos que se analice en detalle la información.

Definiendo las propiedades de los Filtros

La siguiente figura muestra el panel de definición de un filtro.

Un filtro queda definido por los siguientes campos:

  • Nombre del Campo: Es un nombre arbitrario para el Filtro

  • Etiqueta del Argumento: Es la etiqueta que se muestra al usuario como descripción del Filtro en la Consulta

  • Nombre del Argumento: identifica internamente el filtro. Tiene como restricción de que no puede contener espacios en blanco.

  • Tipo del Argumento: Es el tipo de dato de la colección de valores posibles para el filtro. Por ejemplo, un filtro que contiene como valores los años, se debe definir el tipo Entero.

  • Dimensión y Nivel: Permiten elegir la dimensión y el nivel de la misma con los cuales se sincroniza el filtro.
    Esta relación permite pasarle al filtro el valor del elemento de la dimensión seleccionado cuando se navega en el cubo.
    La dimensión que se desea asociar se debe elegir de la lista de dimensiones que se ofrecen como ayuda del campo.
    Para ello es necesario haber indicado el cubo para el cual se define la consulta detallada en el panel de propiedades de la consulta

  • Condición: Es una expresión que expresa la condición que se aplica al campo de la base de datos para restringir el conjunto de resultado.
    La sintaxis depende del DBMS utilizado.
    El valor asignado al campo es representado con un signo de interrogación. El mismo es sustituido con el valor del filtro al ejecutar la consulta.
    Por ejemplo la condición utilizada para definir el año como filtro, a partir de un campo de tipo fecha de la base de datos es: year(OrderDate) = ?
    El ejemplo presentado asume que la función year(date) que recibe una fecha y devuelve un entero que representa el año de la misma, es ofrecido por el DBMS utilizado..

  • Ayuda: Permite asociar al filtro la lista de valores posibles y desplegarlos como ayuda del campo en el panel de la consulta detallada.
    Para ello se debe definir una consulta a la base de datos que obtenga la clave y descripción del filtro.

  • Esquema de Ayuda: Indica la conexión de base de batos que se debe utilizar para la consulta definida como ayuda del filtro.
    La misma se elige de la lista de conexiones definidas previamente.

Los filtros se aplican en las dimensiones utilizando la clave de los elementos. Es decir que se filtra por un elemento cuando el valor del filtro coincide con la clave del elemento de la dimensión.

En el caso de las dimensiones Fecha se hace una interpretación del filtro para seleccionar el elemento correcto en la dimensión Fecha

Los cambios realizados en la definición de los filtros deben salvarse.

Para ello se debe utilizar el botón "Guardar" del panel de propiedades de la consulta.

IMPORTANTE
Al momento de Guardar o de Cambiar de Repositorio se borra el nombre de la Tabla/Vista definida en la consulta. Generando dos situaciones

  1. Si no se completa nuevamente la información de la Tabla/Vista y se realizan modificaciones a la Consulta y se graba, ésta no va a tener el vínculo con la Tabla/Vista y no se ejecutará el O3Query.

  2. En caso de completar nuevamente el nombre de la Tabla/Vista, aparecerá una ventana consultando si desean autollenar. Se debe indicar que no y continuar el desarrollo

Para facilitar la definición de los filtros se dispone de las siguientes operaciones:

  • Agregar un nuevo Filtro

  • Eliminar un filtro existente

  • Cambiar de posición un Filtro

  • Modificar un filtro existente

Para agregar un nuevo filtro es necesario:

  1. Hacer clic con el botón derecho del ratón sobre el nodo "Filtros"

  2. Elegir la opción "Nuevo Filtro" de la entrada "Agregar" de dicho menú.

  3. Elegir el filtro agregado con el botón izquierdo del ratón y definir sus propiedades.

  4. Confirmar los cambios con el botón "Guardar" ubicado en el panel de propiedades de la consulta

Para eliminar un filtro es necesario:

  1. Hacer clic con el botón derecho del ratón sobre el Filtro que se desea eliminar para desplegar el menú de operaciones sobre el filtro

  2. Elegir la opción "Borrar" de dicho menú para eliminar el filtro elegido

  3. Confirmar los cambios con el botón "Guardar" ubicado en el panel de propiedades de la consulta

El orden en el que se presentan los filtros en el panel de la consulta detallada queda determinado por la posición de los mismos en el panel de definiciones. Es posible reubicar un filtro con las opciones "Subir" y "Bajar" del menú desplegado con el botón derecho del ratón.
Para mover un filtro una posición se debe:

  1. Hacer clic con el botón derecho del ratón sobre el Filtro que se desea mover para desplegar el menú de operaciones sobre el filtro

  2. Elegir la opción "Subir" o "Bajar" de dicho menú para mover el filtro. Esta operación se debe repetir tantas veces como posiciones se desee mover.

  3. Confirmar los cambios con el botón "Guardar" ubicado en el panel de propiedades de la consulta

Para modificar las propiedades de un filtro es necesario:

  1. Seleccionar el Filtro que desea modificarse con el botón izquierdo del ratón. De esta forma aparecen sus propiedades en el panel de propiedades.

  2. Modificar las propiedades que se deseen cambiar

  3. Confirmar los cambios con el botón "Guardar" ubicado en el panel de propiedades de la consulta

 

Archivo de Configuración

Las consultas detalladas quedan disponibles a través de la opción de nombre Plugins del menú "Ventana" (desde el O3Browser) y en el portal desde el icono

Para ello es necesario definir y ubicar en el mismo directorio donde se encuentra el cubo un archivo de configuración. Este archivo tiene el mismo nombre del cubo y extensión plugins.

Por ejemplo si el Cubo se llama Vinos.cube el archivo de configuración Vinos.plugins

El detalle del contenido del archivo es el siguiente:

# Comentarios precedidos del caracter numeral plugin.i.name=<Nombre con que aparece la consulta al usuario> plugin.i.dsc=<Descripción de la consulta> plugin.i.browser.class=com.ideasoft.o3.dt.plugin.DTBrowserPlugin plugin.i.server.class=com.ideasoft.o3.dt.plugin.DTServerPlugin plugin.i.args=taskName=<Nombre asignado a la consulta>Task

Notar que se define un archivo para cada cubo. El índice i varía de cero en adelante para cada consulta que se incluye.