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



19 comentarios:

jessica dijo...

hola, estuve leyendo tu post, pero yo me descargue la version 3 stable, y llegue hasta el paso de configurar las cosas en la carpeta jboss, ya que el tres no la trae, me ayudarias, porque tengo que realizar un trabajo para la facultad, y pentaho es lo unico que encontre libre a diferencia de otras herramientas

Jorge Luis Rivera Ramos dijo...

Hola Jessica, tienes razón en el post 3 se revisa lo necesario para la configuración del acceso a datos para la versión 1.7.1, pero si revisas el siguiente post encontrarás los pasos a seguir para las versiones 2.0.0 y 3.0.0.
Además te comento que hay muchas más herramientas libres que puedes investigar en el ámbito de BI, revisa el siguiente enlace.
Saludos

Anónimo dijo...

hola jorge luis rivera, mi nombre es yerko bonacic-doric y tengo una duda al cargar la base de datos en postgres me arroga un error

ERROR: schema "ventas" does not exist
Estado SQL:3F000

no se como lo puedo solucionar para poder crear la base de datos..
tambien toy trabajando con pentaho, para un trabajo de mi universidad, por que arroja ese error ya que segui los pasos del tutorial tal como desia el blog,
atte: Yerko Bonacic-Doric

yerko bonacic-doric dijo...

hola jorge luis rivera, mi nombre es yerko bonacic-doric y tengo una duda al cargar la base de datos en postgres me arroga un error

ERROR: schema "ventas" does not exist
Estado SQL:3F000

no se como lo puedo solucionar para poder crear la base de datos..
tambien toy trabajando con pentaho, para un trabajo de mi universidad, por que arroja ese error ya que segui los pasos del tutorial tal como desia el blog,
atte: Yerko Bonacic-Doric

Jorge Luis Rivera Ramos dijo...

Hola Yerko, el error que envías está claro: El esquema ventas no existe.
En el segundo paso de la creación de la base de datos se indica crear dicho esquema.
- Primero crear la bd VENTAS (en mayúsculas)
- Seguno crear el esquema ventas (en minúsculas)
- Luego se crean las tablas, utilizando los scripts de los cuales he dejado los links.

Yerko Bonacic-Doric dijo...

hola jorge, logre crear la base de datos, pero ahora me encuentro con otro problema, luego de editar todos los archivos xml, al correrlo en el design studio para ver la consulta a la base de datos, me habre localhost entro con el admin y luego me arroga un error,
[es_161] Error: SQLBaseComponent.ERROR_0007 - [es_258] Connection to data source is not valid (org.pentaho.plugin.sql.SQLLookupRule)
y segui tal cual los pasos del tutorial, edite bien los archivos, me deberia haber mostrado la consulta, donde puede estar el error, para poder ver la consulta a la base de datos...
atte: yerko bonacic-doric

Yerko Bonacic-Doric dijo...

creo que el error esta en esta linea de codigo,
[es_116] Debug: [es_34] audit: instanceId=fd8ba193-d4e1-11de-bd41-b14201a30f89,
por que al actualizar se actualizan los numeros en la condicion que hay, kizas el pasword o el usuario, o alguna variable con algun error, me lo muestra al final, cuando coloco run en el localhost, para ver la consulta a la base de datos...
atte: yerko bonacic-doric

junior dijo...

Que tal jorge...
Mira soy nuevo en pentaho...yo tengo la version estable 3.0 creè la coneccion con el driver perfecto la base de datos perfecto..pero el proble es que no me presenta el reporte me da un error al realizar el test..
me dice:
An SWT error has ocurred
you and recommender to exit the workbench
Subsequence error may happen and may terminate the workbench without warning.
see the .log file for more datails
do you want to exit the workbench

junior dijo...

q tal jorge ...
mira yo soy nuevo en pentaho..uso la version estable 3.0.. utilizo jdbc
realiza la coneccion con el driver en administration console perfecto..
la base de datos postgresqls perfecto...pero me da un error al momento de realizar el test..
me dice::
An SWT has ocurred
You are recommender to exit the workbench
Subsequence error may happend and may terminqate the workbench without warning
SEE the .log for more details
do you want to exit the workbench

YES NO
ayudame jorge
Gracias...

Jorge Luis Rivera Ramos dijo...

Hola Junior, el error que indicas no tengo idea a qué se deba. En todo caso es debido a algún problema del sistema operativo. Pero intenta con las siguientes alternativas.

Si es que al ir a la solapa Test, no te muestra el error, has click en Generar URL, copia ese link y ábrelo en el browser que prefieras.

Caso contrario intenta descargando las versión 3.0.0 de PentahoDesignStudio o la versión 3.5.0.

junior dijo...

que tal luis...
nada hermano..la version q estoy utilizando es la 3.0.0 estable del design-studio..
el error se produce al generar el test ...
mira lo q yo hice fue instalar el biserver con todas las demas herramientas en una carpeta llamda pentaho...todo me funciona correcto excepto el design-studio..al inicio de levantar el design-studio..me dice q ponga el lugar donde quiero guardar el proyecto..ese lugar es indistinto no importa donde lo ponga...gracias....Jorge...

junior dijo...

estoy utilizando
ubuntu 9.04...
La verdad no se cual sera el problema..pero necesito levantar esta aplicacion....los demas modulos el report-design...la data integracion...todo funciona bien.....es que necesito presentar un reporte de la base de datos postgres,,por eso es que requiero levantar el design-studio...
Gracias jorge...

Deivid dijo...

Hola, soy nuevo en este sistema y me baje la versión 1.7.1 para Windows y mi consulta es la siguiente:
Yo requiero que el pentaho en vez de tomar los datos desde una bd hecha en PostgreSQL , que los tome desde 3 diferentes bases SQL ODBC o al menos una sola (cada bd tiene aproximadamente 500 tablas) . pero no encuentro la forma de configurarlas. si me podes dar una mano te lo agradecería.

Saludos cordiales,

Matias David

Jorge Luis Rivera Ramos dijo...

Hola Deivid, disculpa la demora en contestar. Si bien has seguido el post para configurar tu propia base de datos en la versión 1.7.1 te recomendaría que descargues la versión 3.0 o la última 3.5. (La configuración del datasource es mucho más sencilla http://mixelaneo.blogspot.com/2009/06/pentaho-paso-paso-conexion-tu-base-de.html)

Pero si de todos modos deseas trabajar con SQL Server, lo primero que debes hacer es descargar el driver jdbc de microsoft. Sigue el siguiente link: http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=99b21b65-e98f-4a61-b811-19912601fdc9&displayLang=en
Vas al enlace Start Download (eliges abrir archivo) y al final de la página puedes descargar el archivo sqljdbc_2.0.1803.100_enu.exe

Al descomprimir encontrarás utilizas el archivo sqljdbc4.jar (si tienes JRE 6 ó posterior).

Luego ya puedes seguir los mismos pasos que se hicieron para trabajar con postgresql.

En el archivo jboss-web.xml agregas:


jdbc/cnsqlserver javax.sql.DataSource
java:/cnsqlserver


En el archivo web.xml agregas:
Archivo: web.xml

cnsqlserver
jdbc/cnsqlserver javax.sql.DataSource
Container


Creas el archivo cnsqlserver-ds.xml
cuyo contenido sería:




cnsqlserver
jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks
com.microsoft.sqlserver.jdbc.SQLServerDriver
sa
sasa



Y lo más importante copias el archivo sqljdbc4.jar a la ruta: jboss/server/default/lib/.

Saludos

Jorge Luis Rivera Ramos dijo...

Deivid, el código XML que indiqué en la respuesta anterior no está entedible, puedes acceder al siguiente enlace y ver el resto de la explicacicón.

http://correo.ezder.com/home/jorge.rivera@ezder.com/Archivos%20compartidos/Conexion%20Pentaho%20SQLServer.txt


Saludos

Aimee dijo...

Hola a todos, soy nueva con Pentaho y he encontrado este tutorial espectacular. Quiero seguir los ejemplos, pero los links donde estaban los scripts para creacion y carga estan caducados. Alguien me puede ayudar con esto ??
Saludos,
Aimee

Anónimo dijo...

Hola compa¡¡ esta muy padre este tutorial, pero ya no sirve el link para descargar el archivo para crear las tablas del post#3, o alguien que ya lo haya bajado que me lo pueda proporcionar??¡¡ gracias de ante mano¡¡¡

Jorge Luis Rivera Ramos dijo...

Acabo de actualizar los links espero que ya no tengan problemas.

cristhian dijo...

Estimado, tengo un error que no logro solucionar, estoy usando la version 3.8 de PDS

The Pentaho BI Platform reported an error while running an action sequence

Possible Causes:
RuntimeContext.ERROR_0017 - [es_18] Activity failed to execute
Action Sequence:salida.xaction
Execution Stack:
EXECUTING ACTION: Relational (SQLLookupRule)
Loop Index (1-based):0
Error Time:miércoles 16 de noviembre de 2011 11:13:10 AM BOT
Error Type:ActionExecutionException
Session ID:joe
Instance Id:7ebe2ffe-1065-11e1-873c-77adbdc3cd4e
Action Class:SQLLookupRule
Action Description:Relational

No he encotrado en la web algo que me ayude a corregir este error, puse bien los parametros proces action -> retational, mi query esta bien formada
Saludos y anticipadamente muchas gracias