jueves, 14 de mayo de 2009

Post # 3 - Conexión a tu base de datos (v 1.7.1)

Si bien a estas alturas ya podemos revisar los diversos ejemplos que muestra Pentaho, es de esperar que creemos nuestras propias páginas y mejor aún obteniendo información de nuestra propia base de datos. Entonces sin perder más tiempo nos ponemos manos a la obra.1. Creación de la Base de datos.
Para este ejemplo y los que vendrán a continuación se va a crear una pequeña base de datos llamada VENTAS, la cual la vamos a crear en el DBMS (DataBase Management System) PostgreSQL, para esto estoy usando la versión 8.3.2 (Obviamente el que ya posee una base de datos propia podrá trabajar con ella y con sus propias querys).

  • Entonces cargamos pgAdminIII, clic derecho en Databases -> New Database y creamos la base de datos VENTAS.


  • A continuación vamos a crear el esquema ventas, para esto nos ubicamos en Schemas de la base de datos VENTAS, click derecho -> New Schema.


  • Ahora desde la BD VENTAS, abrimos una ventana para ejecutar querys.


  • En la ventana escribimos las querys para crear las tablas. De los siguientes enlaces pueden descargar el script para crear las tablas y cargar los registros de ejemplo. El modelo entidad relación se muestra a continuación.


2. Utilizar Pentaho Design Studio
.
Dado que debemos crear nuestra propia solución para acceder a nuestra base de datos, la herramienta que debemos utilizar es Pentaho Design Studio (PDS). De la misma página de donde se descarga Business Intelligence Server (BIS) podemos descargar las diferentes versiones de PDS. En este caso estoy utilizando una versión algo antigua (pds-open-1.7.1).

Una vez descargado el archivo pds-open-1.7.1.zip simplemente queda descomprimirlo, y se obtiene la carpeta pentaho-design-studio. Ahora ejecutamos el archivo PentahoDesignStudio.exe. Se mostrará la misma interfaz de Eclipse. Cerramos la ventana Welcome y debemos seguir los siguientes pasos para crear nuestra solución:

2.1 Crear nuevo proyecto.


  • Ir al menú File -> New -> Project. En la lista que se muestra abrir la carpeta General y seleccionar Project





  • En Project Name escribimos: BIS 1.7.1.

  • Desactivamos el check en Use default location y navegamos hasta la ruta de la carpeta pentaho-demo (En este caso estamos usando la versión 1.7.1 de Pentaho BIS). Y ya se había visto en el post anterior (Descarga e instalación) cual era la carpeta donde se había "instalado".

  • Con esto ya hemos creado nuestro proyecto en PDS. Y debería quedar como se muestra en la siguiente imagen:
2.2 Crear nueva solución.

  • Nos ubicamos en la carpeta pentaho-solutions, creamos una carpeta nueva (Click derecho -> New -> Folder) y la nombramos ventas.

  • Ahora nos ubicamos en la carpeta ventas y vamos al menú BI Platform y elegimos New Action Sequence.

  • Verificamos que en Container esté la ruta de la carpeta ventas y en File name escribimos vendedores.xaction.


  • Una vez creado el archivo vendedores.xaction. Hacemos doble click en él y ya podremos editarlo.

  • En PDS al editar un archivo xaction muestra el Action Sequence Editor. En este link se puede encontrar más información.

  • Ahora nos ubicamos en el tab Define Process y añadiremos un Process Action. En este caso se obtendrá datos de una consulta a nuestra base de datos, para eso vamos a: Add New Action -> Get Data From -> Relational.


  • Ponemos como nombre del Process Action: Query-Vendedores y además configuramos lo siguiente:


    1. Database Connection Type: Elegimos JNDI.

    2. Nombre del JNDI: Escribimos Ventas.

    3. Query: Escribimos la consulta SQL para devolver el listado de vendedores por cada tienda. select ti.no_tienda as Tienda, ve.no_vended as Vendedor, ve.co_docide as Documento
      from ventas.tctienda ti
      left join ventas.tcvended ve on ti.co_tienda = ve.co_tienda
      order by ti.no_tienda;

    4. Result Set Name: Por defecto aparece query-result (si se desea se puede renombrar).

    5. Process Outputs: Click en Add Output y elegimos query-result o el nombre que hayan usado en el paso anterior para Result Set Name.



  • Ahora debemos testear si nuestro archivo vendedores.xaction devuelve el listado de los vendedores. Para eso nos ubicamos en el tab Test.

  • En Penaho Server URL escribimos: http://localhost:8080/pentaho. (Para que esta URL quede configuarada de manera permanente lo hacemos en: menú Window -> Preferences -> Pentaho Design Studio -> Pentaho Server URL).

  • Ahora hacemos click en el botón Generate URL y se genera la URL completa para acceder al xaction que hemos creado.

  • Por último hacemos click en Run, aparece el Login inicial de Pentaho, en mi caso selecciono el usuario Joe (Admin) y ...... ocurrirá un error, con el siguiente mensaje: Connection to data source is not valid.

  • El error se produce porque falta algo muy importante: Configurar el JNDI para realizar la conexión nuestra base de datos.
2.3 Configurar JNDI para conexión a base de datos.En la versión 1.7.1 de Pentaho BIS se siguen los siguientes pasos para realizar la configuración. (Todo lo realizamos desde el mismo Pentaho Design Studio.


  1. Editar el archivo jboss-web.xml ubicado en jboss/server/default/deploy/pentaho.war/WEB-INF y agregar luego de:><!-- insert additional resource-refs --> lo siguiente:

    <resource-ref>
    <res-ref-name>jdbc/Ventas</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <jndi-name>java:/Ventas</jndi-name>
    </resource-ref>


  2. Editar el archivo web.xml ubicado en jboss/server/default/deploy/pentaho.war/WEB-INF y agregar luego de <!-- insert additional resource-refs --> lo siguiente:

    <resource-ref>
    <description>Ventas</description>
    <res-ref-name>jdbc/Ventas</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>


  3. Ahora nos ubicamos en la carpeta deploy ubicada en jboss/server/default
    Click derecho New -> File. Y nombramos al archivo Ventas-ds.xml, y como contenido del archivo editamos lo siguiente:

    <?xml version="1.0" encoding="UTF-8"?>
    <datasources>
    <local-tx-datasource>
    <jndi-name>Ventas</jndi-name>
    <connection-url>jdbc:postgresql://localhost:5432/VENTAS</connection-url>
    <driver-class>org.postgresql.Driver</driver-class>
    <user-name>usuario</user-name>
    <password>password</password>
    </local-tx-datasource>
    </datasources>


    Tener presente que el nombre del JNDI es Ventas (la primera letra con mayúscula) y es el nombre que hemos utilizado en los pasos 1 y 2. El nombre de la base de datos que estamos indicando en <connection-url/> es VENTAS (todo en mayúsculas) pues así lo hemos indicado al crear la base de datos. Además es obvio que se debe editar el usuario y el password.

  4. Debemos asegurarnos que el archivo jar (postgresql-8.2-506.jdbc3.jar) que permite la conexión a bases de datos Postgresql exista en la siguiente ruta: jboss/server/default/lib/. En la versión 1.7.1 ya viene este archivo jar, en la versión 1.2.0 se debía copiar el archivo jar en la carpeta indicada.

  5. Ahora solamente debemos reiniciar el servicio. Para esto, desde Explorador de Windows acceddemos a los archivos stop-pentaho.bat y luego start-pentaho.bat.

  6. Una vez reiniciado el servicio volvemos al Pentaho Design Studio, doble click en el archivo vendedores.xaction, seleccionamos el tab Test, generamos la URL y ejecutamos. Y obtenemos como resultado lo mostrado en la imagen siguiente:
OBS. En el siguiente post, se revisará la forma de crear un datasource pero aplicadas a las versiones 2.0.0 y 3.0.0.


Aprender Pentaho Data Integration (Kettle)
Post # 6 - Crear cubo OLAP con CubeDesigner
Post # 5 - Crear base de datos multidimensional
Post # 4 - Conexión a tu base de datos - II
Post # 3 - Conexión a tu base de datos
Post # 2 - Descarga e instalación
Post # 1 - Business Intelligence, introducción sobre Pentaho