Buscar en el Blog

Cargando...

martes, 14 de junio de 2016

Agile Data Warehousing / Business Intelligence

En el siguiente artículo explico algunas técnicas, herramientas y prácticas de ingeniería para construir sistemas de Data Warehousing / Business Intelligence usando una metodología de desarrollo ágil (Agile)

Agile DW / BI en Acción

sábado, 2 de abril de 2016

Licenciamiento

Estimados lectores:

Mi principal motivación y propósito de éste blog ha sido el de contribuir a la comunidad con guías y resolución a problemas en idioma español para las tecnologías de manejo de Datos Open Source sean éstas para (Data Warehousing, Business Intelligence, Data Engineering, Data Science, etc.)

Se me notificó hace días atrás que personas poco éticas han tomado el contenido del blog textualmente, sin ninguna atribución y lo han generado en formato .doc para comercializarlo como tutorías en un portal web. Al no tener los conocimientos suficientes en las tecnologías mencionadas y el haber tomado tal cual el contenido sin atribución y ninguna secuencia, han generado un perjuicio económico a ciertas personas afectas, a quiénes agradezco por haberme notificado sobre éste particular.

Esto me ha motivado a licenciar todo el contenido del blog bajo la licencia Creative Commons, que en resumen:

ESTÁ PERMITIDO

  • COMPARTIR: copiar y distribuir el material en cualquier medio o formato
  • ADAPTAR: cambiar, mezclar y crear nuevo material sobre el contenido

BAJO LOS SIGUIENTES TÉRMINOS

  • ATRIBUCIÓN: se debe dar obligatoriamente el crédito apropiado al autor, proveer un link a la licencia e indicar sí se realizaron cambios.
  • NO COMERCIAL: no se puede usar el material con fines comerciales

jueves, 5 de noviembre de 2015

Como acceder directamente a reportes creados con PRD usando el API de REST de Pentaho BI Server 5.x

En ésta publicación explico el procedimiento para invocar a Pentaho Report Viewer a través del API de REST. Esto es muy útil cuando se desea acceder directamente a reportes creados con Pentaho Report Designer (PRD) y publicados en BI Server sin necesidad de navegar por la perspectiva Browse Files.

Suponiendo que se tiene la siguiente organización de la solución y se desea visualizar el ReportePentaho.prpt:

├── home
│   └── cursobi
│       └── reportes
│           └── ReportePentaho.prpt


El API de REST para invocar a ReportViewer provee el siguiente URL:
http://localhost:8080/pentaho/api/repos/<path>/viewer

En dónde <path> hace referencia a la ubicación del reporte usando :
:home:cursobi:reportes:ReportePentaho.prpt

URL simple para visualizar un reporte
http://localhost:8080/pentaho/api/repos/:home:cursobi:reportes:ReportePentaho.prpt/viewer

URL para visualizar un reporte enviando los valores de los parámetros

http://localhost:8080/pentaho/api/repos/:home:cursobi:reportes:ReportePentaho.prpt/viewer?param1=A&param2=X&param2=Y&param2=N

NOTA: para parámetros de selección múltiple se envía N veces el parámetro con los valores. Ej. param2=X&param2=Y&param2=N

URL para visualizar un reporte en formato PDF y ocultar la selección de parámetros
http://localhost:8080/pentaho/api/repos/:home:cursobi:reportes:ReportePentaho.prpt/viewer?param1=A&param2=X&param2=Y&paramN=N&output-target=pageable/pdf&showParameters=false

miércoles, 14 de octubre de 2015

Configuración de Conexión JNDI en Pentaho BI Server v5.4 para MySQL

En ésta publicación explico el procedimiento para configurar una conexión JNDI (Java Naming and Directory Interface) en Pentaho BI Server v5.4 hacia un servidor de base de datos MySQL.

1. Ir al directorio tomcat/conf y editar el archivo context.xml

2. Dentro de la etiqueta <Context> colocar lo siguiente:
<Context>
...
<Resource name="jdbc/dwh"
    auth="Container" type="javax.sql.DataSource"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    maxActive="20"
    maxIdle="5"
    maxWait="10000"
    username="usuario"
    password="password"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/dwh"/>
...
<Context>
NOTA: el nombre jdbc/dwh es muy importante y es sensible a mayúsculas y minúsculas. Es importante recordarlo para configurarlo en las herramientas de BI de Pentaho que se usen. El atributo driverClassName hace referencia al driver JDBC de MySQL y el atributo url a la cadena de conexión hacia el Data Warehouse.

3. Ir al directorio /tomcat/webapps/pentaho/WEB-INF y editar el archivo web.xml

4. Ubicar el comentario <!-- insert additional resource-refs --> y colocar la referencia al recurso JNDI creado en el paso 2.
  <!-- insert additional resource-refs -->
  <resource-ref>
    <description>DWH</description>
    <res-ref-name>jdbc/dwh</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
5. Iniciar Pentaho BI Server y acceder a PUC como Administrador

6. Ir a la perspectiva Home > Manage Data Sources > New Connection en JNDI Name colocar dwh

Configuración de Pentaho BI Server v5.4 para MySQL Server

En ésta publicación explico el procedimiento para configurar los repositorios de metadatos de Pentahohibernate, quartz jackrabbit en la base de datos MySQL

Por defecto,  biserver usa la base de datos HSQLDB, ésta base de datos no es recomendada para instalaciones en producción por lo que es conveniente instalarlo en un motor de base de datos más robusto, biserver viene con los scripts para MySQL, Oracle, PostgreSQL y SQL Server

Pre-requisitos.-
  • Tener instalado y configurado el JDK v1.7 o superior, en la siguiente publicación se explica el procedimiento
  • Tener instalado la base de datos  MySQL v5.5 o superior
  • Haber descargado la aplicación biserver-ce de Pentaho y haberla copiado y descomprimido en el directorio: \biserver-ce-5.4
  • Haber descargado el controlador JDBC para  MySQL
Configuración paso a paso.-

1. Ir al directorio \biserver-ce-5.4\data aquí se encuentran los scripts para MySQL, Oracle, PostgreSQL y SQL Server

2. Abrir el directorio mysql5 y ejecutar los scripts: create_repository_mysql.sqlcreate_quartz_mysql.sql y create_jcr_mysql.sql

Se puede ejecutar los scripts SQL desde la línea de comandos, de la siguiente forma:

mysql -u root -ppassword < /path/to/create_repository_mysql.sql
mysql -u root -ppassword < /path/to/create_quartz_mysql.sql
mysql -u root -ppassword < /path/to/create_jcr_mysql.sql

NOTA: password es la contraseña por defecto para los usuarios hibuser del repositorio hibernate,  pentaho_user del repositorio quartz, y jcr_user del repositorio jackrabbit


Configuración de Tomcat

3. Copiar el driver JDBC de MySQL (mysql-connector-java-5.X.X-bin.jar) al directorio \biserver-ce-5.4\tomcat\lib. NOTA: sí existe un driver JDBC para MySQL en el directorio, de preferencia reemplazarlo por uno más reciente.

4. Editar el archivo context.xml ubicado en el directorio: \biserver-ce-5.4\tomcat\webapps\pentaho\META-INF. Colocar la siguiente configuración para cambiar la conexión a MySQL

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/pentaho" docbase="webapps/pentaho/">
 <Resource name="jdbc/Hibernate" auth="Container" type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"
  maxWait="10000" username="hibuser" password="password"
  driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/hibernate"
  validationQuery="select 1;" />
  
 <Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"
  maxWait="10000" username="pentaho_user" password="password"
  driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/quartz"
  validationQuery="select 1;"/>
</Context>


5. Editar el archivo web.xml en el directorio \biserver-ce-5.4\tomcat\webapps\pentaho\WEB-INF. En la línea 76 colocar lo siguiente para que únicamente se inicie la base de datos de ejemplo de HSQLDB:

<!-- [BEGIN HSQLDB DATABASES] -->
  <context-param>
    <param-name>hsqldb-databases</param-name>
    <param-value>sampledata@../../data/hsqldb/sampledata</param-value>
  </context-param>
  <!-- [END HSQLDB DATABASES] -->

Configuración en BI Server

Todos los archivos de configuración del servidor central de BI de Pentaho Community Edition (biserver-ce) se encuentran en el directorio: \biserver-ce-5.4\pentaho-solutions\system

El resto de configuraciones se realizarán en éste directorio.

6. Ir al subdirectorio /hibernate y editar el archivo hibernate-settings.xml, cambiar la etiqueta <config-file> al valor: system/hibernate/mysql5.hibernate.cfg.xml como se muestra a continuación:

<?xml version='1.0' encoding='utf-8'?>
<settings>
 <config-file>system/hibernate/mysql5.hibernate.cfg.xml</config-file>
</settings>

NOTA: no olvidar de editar el archivo mysql5.hibernate.cfg.xml sí la base de datos está en otro servidor

7. Editar el archivo applicationContext-spring-security-hibernate.properties y cambiar la configuración de conexión a MySQL como se muestra a continuación:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/hibernate
jdbc.username=hibuser
jdbc.password=password
hibernate.dialect=org.hibernate.dialect.MySQLDialect

8. Editar el archivo quartz.properties en el directorio \biserver-ce-X.X.X\pentaho-solutions\system\quartz ubicar la propiedad org.quartz.jobStore.driverDelegateClass (línea 300) y colocar el siguiente valor:
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate

9. Editar el archivo repository.xml de Jackrabbit en el directorio \biserver-ce-5.4\pentaho-solutions\system\jackrabbit. Realizar los siguientes pasos para que Jackrabbit apunte al repositorio de base de datos creado en MySQL:

  • Configuración del FileSystem: descomentar de la línea 44 a la 51. Comentar de la línea 79 a la 83
  • Configuración del DataStore: descomentar de la línea 97 a la 108. Comentar la línea 151
  • Configuración del Workspace: descomentar de la línea 219 a la 226. Comentar de la línea 255 a la 259. Descomentar de la línea 274 a la 281. Comentar de la línea 312 a la 317
  • Configuración del Versionamiento: descomentar de la línea 367 a la 374. Comentar de la línea 402 a la 406. Descomentar de la línea 422 a la 429. Comentar de la línea 459 a la 464

10. Reiniciar el servidor de BI de Pentaho

viernes, 7 de agosto de 2015

Cómo ocultar el mensaje de la versión Community para el visor Saiku

En ésta publicación explico el procedimiento para ocultar el mensaje de la versión Community del visor de cubos OLAP Saiku v3.3.


1. Ir al directorio /biserver-ce/pentaho-solutions/system/saiku/ui

2. Editar el archivo saiku.min.js con un editor de texto

3. En el archivo, buscar el valor
$(a.workspace.el).find(".upgrade")
y reemplazarlo por
$(a.workspace.el).find(".upgradex")
NOTA: aproximadamente se tienen que reemplazar 4 ocurrencias

lunes, 20 de julio de 2015

Cómo configurar una conexión JNDI en Pentaho Data Integration

En ésta publicación explico el procedimiento para configurar una conexión JNDI a PostgreSQL en Pentaho Data Integration (PDI)

1. Ir al directorio data-integration/simple-jndi

2. Dentro del directorio editar el archivo de nombre jdbc.properties

3.
Agregar las conexiones a la base de datos STAGE y DWH:
dwh/type=javax.sql.DataSource
dwh/driver=org.postgresql.Driver
dwh/url=jdbc:postgresql://127.0.0.1:5432/dwh
dwh/user=postgres
dwh/password=postgres
stage/type=javax.sql.DataSource
stage/driver=org.postgresql.Driver
stage/url=jdbc:postgresql://127.0.0.1:5432/stage
stage/user=postgres
stage/password=postgres
4. Guardar el archivo y ejecutar spoon. Cuando se cree la conexión, hacer referencia al JNDI Name: stage o dwh

martes, 2 de junio de 2015

Cómo exportar los resultados de una consulta SQL a un archivo CSV en PostgreSQL

En la siguiente publicación comparto cómo exportar los resultados de una consulta SQL realizada en PostgreSQL a un archivo CSV.
Usando la aplicación psql se envian los argumentos nombre_bdd con el nombre de la base de datos dónde se desea ejecutar la consulta, usuario corresponde al nombre de usuario de la base de datos.

El argumento -p permite definir el puerto en dónde está levantado el servidor de PostgreSQL. Por defecto es el puerto 5432.

En la sección de COPY () se coloca la consulta SQL que se desea ejecutar para que luego sus resultados sean exportados a un archivo CSV que se define en el último argumento como nombre_archivo.csv

jueves, 28 de mayo de 2015

Como activar el soporte para tipos de datos booleanos en PDI usando un Table Output

En ésta publicación explico el procedimiento para habilitar el soporte en Pentaho Data Integration para insertar datos booleanos (boolean). En sistemas operativos Windows al querer insertar en una columna de una tabla un campo que viene en el flujo como tipo Boolean lo intenta insertar como VARCHAR y se genera un error.

Para resolver éste inconveniente es necesario hacer lo siguiente:

1) Dentro de Spoon, ir a Tools > Repository > Explore
2) Ir a la pestaña de Connections y editar la conexión. Por defecto se muestra la categoría General
3) Ir a la categoría Advanced y marcar "Supports boolean data type"

miércoles, 13 de mayo de 2015

Arquitectura de Flujo de Datos con Pentaho CE v5.x



En el siguiente diagrama que he creado muestro una Arquitectura de Flujo de Datos para cargar un Data Warehouse (DWH) apoyada por las herramientas de la plataforma Pentaho CE v5.x

Las actividades de Data Warehousing se realizan usando las herramientas de Pentaho Data Integration (PDI), Spoon es la herramienta gráfica para construir los procesos ETL,  Kitchen/Pan son las herramienta que permiten calendarizar la ejecución de los procesos ETL.

Las construcción de soluciones para actividades de Inteligencia de Negocios son apoyadas por las siguientes herramientas:
  •  Pentaho Metadata Editor (PME) permite crear una capa de metadatos sobre el DWH con términos del negocio; ésta capa es la fuente para crear reportes a demanda usando la herramienta WAQR (Web-based Ad Hoc Query and Reporting)
  • Pentaho Report Designer (PRD) permite crear reportes avanzados que contienen fórmulas, agrupaciones, hipervínculos, parámetros, gráficos
  • Pentaho Schema Workbench (PSW) permite crear cubos de análisis OLAP
  • Community Tools (CTools) conjunto de herramientas Open Source que permiten construir tableros de mando (Dashboards) con indicadores claves de rendimiento (KPIs)


El servidor central Pentaho BI Server posee un cliente web conocido como Pentaho User Console (PUC) a través del cual se accede al contenido publicado por las herramientas PMEPRDPSW y CTools. Además, requiere de 3 repositorios para su operación normal:  hibernate, quartz y jackrabbit.

lunes, 9 de marzo de 2015

Cuadrante Mágico de Gartner para plataformas de BI y Analíticas 2015

En ésta publicación muestro el cuadrante mágico de Gartner para plataformas de BI y analíticas a Febrero 2015.



Como se puede observar continúan siendo líderes las plataformas tradicionales:
  • Microsoft
  • SAS
  • SAP
  • IBM
  • Oracle
  • MicroStrategy
  • Information Builders
Las herramientas de BI: Qlik y Tableau permanecen en el cuadrante de líderes. Es importante recordar que éstas herramientas no ofrecen soluciones de Data Warehousing y permiten conectarse directamente a un Data Warehouse o cualquier otra fuente de datos y demandan de bastante memoria RAM en los servidores. Sin embargo, su costo de licenciamiento comparado con las plataformas tradicionales es bajo.

Sobre las herramientas Open Source: Pentaho continúa en el cuadrante de Jugadores de Nicho (Niche Players) y se anunció éste año la adquisición por parte de Hitachi Data Systems. Jaspersoft fue adquirido por Tibco Software que se encuentra en el cuadrante de Visionarios. 

Referencias.-

miércoles, 25 de febrero de 2015

Cómo cambiar BI Server 5.2 al encoding UTF-8

En ésta publicación explico el procedimiento para colocar el encoding UTF-8 a Pentaho BI Server v5.2.

1. Ir al directorio de BI Server \biserver-ce-5.2

2. Editar el archivo start-pentaho y colocar los siguientes argumentos de JVM -Dsun.jnu.encoding y -Dfile.encoding

En Windows
...
CATALINA_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8 -Xms...
...

En Mac OS X
...
CATALINA_OPTS="-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8 -Xms...
...

NOTA: ésta configuración tiene que ser realizada con biserver detenido.

miércoles, 18 de febrero de 2015

Cómo configurar una conexión JNDI en Pentaho Report Designer

En ésta publicación explico el procedimiento para configurar una conexión JNDI a PostgreSQL en Pentaho Report Designer (PRD)

1. Ir al directorio home del usuario.

En Mac OS X: /Users/nombre_usuario/.pentaho

En Windows: C:\Users\nombre_usuario\.pentaho 

2. Crear el directorio simple-jndi

3. Dentro del directorio crear un archivo de nombre default.properties

4. Suponiendo que la conexión JNDI en BI Server se la configuró como jdbc/dwh colocar en el archivo lo siguiente:
dwh/type=javax.sql.DataSource
dwh/driver=org.postgresql.Driver
dwh/url=jdbc:postgresql://127.0.0.1:5432/dwh
dwh/user=postgres
dwh/password=postgres
5. Guardar el archivo y ejecutar report-designer. Cuando se cree la conexión, hacer referencia al JNDI Name: dwh

Cómo configurar una conexión JNDI en Pentaho Metadata Editor

En ésta publicación explico el procedimiento para configurar una conexión JNDI a PostgreSQL en Pentaho Metadata Editor (PME)

1. Ir al directorio /simple-jndi y editar el archivo jdbc.properties

2. Suponiendo que la conexión JNDI en BI Server se la configuró como jdbc/dwh colocar al final del archivo lo siguiente:
dwh/type=javax.sql.DataSource
dwh/driver=org.postgresql.Driver
dwh/url=jdbc:postgresql://127.0.0.1:5432/dwh
dwh/user=postgres
dwh/password=postgres
3. Guardar el archivo y ejecutar metadata-editor. Cuando se cree la conexión, hacer referencia al JNDI Name: dwh

martes, 17 de febrero de 2015

Configuración de Conexión JNDI en Pentaho BI Server v5.2 para PostgreSQL

En ésta publicación explico el procedimiento para configurar una conexión JNDI (Java Naming and Directory Interface) en Pentaho BI Server v5.2 hacia un servidor de base de datos PostgreSQL.

1. Ir al directorio tomcat/conf y editar el archivo context.xml

2. Dentro de la etiqueta <Context> colocar lo siguiente:
<Context>
...
<Resource name="jdbc/dwh"
    auth="Container" type="javax.sql.DataSource"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    maxActive="20"
    maxIdle="5"
    maxWait="10000"
    username="postgres"
    password="postgres"
    driverClassName="org.postgresql.Driver"
    url="jdbc:postgresql://127.0.0.1:5432/dwh"/>
...
<Context>
NOTA: el nombre jdbc/dwh es muy importante y es sensible a mayúsculas y minúsculas. Es importante recordarlo para configurarlo en las herramientas de BI de Pentaho que se usen. El atributo driverClassName hace referencia al driver JDBC de PostgreSQL y el atributo url a la cadena de conexión hacia el Data Warehouse.

3. Ir al directorio /tomcat/webapps/pentaho/WEB-INF y editar el archivo web.xml

4. Ubicar el comentario <!-- insert additional resource-refs --> y colocar la referencia al recurso JNDI creado en el paso 2.
  <!-- insert additional resource-refs -->
  <resource-ref>
    <description>Conexion al DWH</description>
    <res-ref-name>jdbc/dwh</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
5. Iniciar Pentaho BI Server y acceder a PUC como Administrador

6. Ir a la perspectiva Home > Manage Data Sources > New Connection en JNDI Name colocar dwh como se muestra a continuación:


martes, 27 de enero de 2015

Cómo aumentar la memoria a SQL Power Architect

En la siguiente publicación explico el procedimiento para aumentar la memoria de la máquina virtual Java (JVM) en la ejecución de la herramienta SQL Power Architect.

Para Windows.-

1. Abrir una consola de comandos (cmd)

2. Ir al directorio en dónde se encuentra la herramienta. Por ejemplo: c:/Program Files/SQL Power Architect

3. Ejecutar la herramienta usando el siguiente comando:

java -Xms1024m -Xmx2048m -jar architect.jar

Para Mac OS X.-

1.
Usando Finder, abrir el contenido de SQL Power Architect JDBC.app/Contents

2. Editar el archivo Info.plist

3. En la sección VMOptions colocar lo siguiente:

<key>VMOptions</key>
<string>-Xms1024m -Xmx2048m</string>

NOTA: Xms1024m indica que se asignarán como mínimo 1024 Megas, Xmx2048m indica que se asignarán como máximo 2048 Megas.

miércoles, 21 de enero de 2015

Cómo saber las 10 tablas más grandes de una base de datos de PostgreSQL

En ésta publicación comparto una consulta SQL para conocer las 10 tablas (Top 10) más grandes de una base de datos PostgreSQL.

SELECT nspname || '.' || relname AS "tabla",
      pg_size_pretty(pg_total_relation_size(c.oid)) AS "tamanio"
FROM  pg_class c
LEFT JOIN pg_namespace n ON (n.oid = c.relnamespace)
WHERE  n.nspname NOT IN ('pg_catalog', 'information_schema') AND
      c.relkind <> 'i' AND
      n.nspname !~ '^pg_toast'
ORDER BY  pg_total_relation_size(c.oid) DESC
LIMIT 10;

martes, 23 de diciembre de 2014

Cómo ocultar el Login as an Evaluator en Pentaho BI Server 5.2

En ésta publicación explico el procedimiento para ocultar la opción de ingresar como evaluador (Login as an Evaluator) en Pentaho User Console (PUC) de BI Server 5.2

1. Ir al directorio:
pentaho-solutions/system/
2. Editar el archivo pentaho.xml y ubicar la etiqueta login-show-sample-users-hint. Cambiar el valor a false
<login-show-sample-users-hint>false</login-show-sample-users-hint>
3. Reiniciar BI Server

viernes, 14 de noviembre de 2014

Cómo activar el log de Mondrian en Pentaho BI Server para visualizar consultas MDX y SQL

En la siguiente publicación explico el procedimiento para habilitar el log de Mondrian en Pentaho BI Server poder visualizar los logs de las consultas MDX y SQL que se realizan. Esto es muy útil cuando queremos optimizar las consultas SQL.

1. Ir al directorio de configuración de Mondrian
cd biserver-ce/pentaho-solutions/system/mondrian

2. Abir el archivo mondrian.properties para editarlo

3. Ubicar las propiedades mondrian.trace.level y mondrian.rolap.generate.formatted.sql  y asignar los siguientes valores
mondrian.trace.level=1
mondrian.rolap.generate.formatted.sql=true

4. Ir al directorio de aplicaciones web de Tomcat y editar el archivo log4.xml
cd biserver-ce/tomcat/webapps/pentaho/WEB-INF/classes

5. Descomentar los appenders MDXLOG y SQLLOG como se muestra a continuación:
 <appender name="MDXLOG" class="org.apache.log4j.RollingFileAppender">
     <param name="File" value="../logs/mondrian_mdx.log"/>
     <param name="Append" value="false"/>
     <param name="MaxFileSize" value="500KB"/>
     <param name="MaxBackupIndex" value="1"/>
     <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
     </layout>
   </appender>

   <category name="mondrian.mdx">
      <priority value="DEBUG"/>
      <appender-ref ref="MDXLOG"/>
   </category>

   <appender name="SQLLOG" class="org.apache.log4j.RollingFileAppender">
     <param name="File" value="../logs/mondrian_sql.log"/>
     <param name="Append" value="false"/>
     <param name="MaxFileSize" value="500KB"/>
     <param name="MaxBackupIndex" value="1"/>
     <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
     </layout>
   </appender>

   <category name="mondrian.sql">
      <priority value="DEBUG"/>
      <appender-ref ref="SQLLOG"/>
   </category>
6. Finalmente, reiniciar Pentaho BI Server

viernes, 17 de octubre de 2014

Configuración de Pentaho BI Server 5.2 para PostgreSQL

En ésta publicación explico el procedimiento para configurar los repositorios de metadatos de Pentahohibernate, quartz jackrabbit en la base de datos PostgreSQL v9.3

Por defecto, el biserver de Pentaho usa la base de datos HSQLDB, ésta base de datos no es recomendada para instalaciones en producción por lo que es conveniente instalarlo en un motor de base de datos más robusto. El biserver viene con los scripts para MySQL, Oracle y PostgreSQL.

Pre-requisitos.-
  • Tener instalado y configurado el JDK v1.7, en la siguiente publicación se explica el procedimiento
  • Tener instalado la base de datos  PostgreSQL v9.3
  • Haber descargado la aplicación biserver-ce de Pentaho y haberla copiado y descomprimido en el directorio: \biserver-ce-5.2
  • Haber descargado el controlador JDBC para  PostgreSQL
Configuración paso a paso.-

1. Ir al directorio \biserver-ce-5.2\data aquí se encuentran los scripts para MySQL, Oracle y PostgreSQL

2. Abrir el directorio postgresql y ejecutar los scripts: create_repository_postgresql.sqlcreate_quartz_postgresql.sql y create_jcr_postgresql.sql

NOTA: password es la contraseña por defecto para los usuarios hibuser del repositorio hibernate,  pentaho_user del repositorio quartz, y jcr_user del repositorio jackrabbit

Configuración de Tomcat

3. Copiar el driver JDBC Tipo 4 de PostgreSQL (postgresql-9.3-x.jdbc4.jar) al directorio \biserver-ce-5.2\tomcat\lib.

4. Editar el archivo context.xml ubicado en el directorio: \biserver-ce-5.2\tomcat\webapps\pentaho\META-INF. Colocar la siguiente configuración para cambiar la conexión a PostgreSQL
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/pentaho" docbase="webapps/pentaho/">
 <Resource name="jdbc/Hibernate" auth="Container" type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"
  maxWait="10000" username="hibuser" password="password"
  driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/hibernate"
  validationQuery="select version();" />
  
 <Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"
  maxWait="10000" username="pentaho_user" password="password"
  driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/quartz"
  validationQuery="select version();"/>
</Context>

5. Eliminar el archivo pentaho.xml del directorio: \biserver-ce-5.2\tomcat\conf\Catalina\localhost

6. Editar el archivo web.xml en el directorio \biserver-ce-5.2\tomcat\webapps\pentaho\WEB-INF. En la línea 76 colocar lo siguiente para que únicamente se inicie la base de datos de ejemplo de HSQLDB:
<!-- [BEGIN HSQLDB DATABASES] -->
  <context-param>
    <param-name>hsqldb-databases</param-name>
    <param-value>sampledata@../../data/hsqldb/sampledata</param-value>
  </context-param>
  <!-- [END HSQLDB DATABASES] -->

Configuración en BI Server

Todos los archivos de configuración del servidor central de BI de Pentaho Community Edition (biserver-ce) se encuentran en el directorio: \biserver-ce-5.2\pentaho-solutions\system

El resto de configuraciones se realizarán en éste directorio.

7. Ir al subdirectorio /hibernate y editar el archivo hibernate-settings.xml, cambiar la etiqueta <config-file> al valor: system/hibernate/system/hibernate/postgresql.hibernate.cfg.xml como se muestra a continuación:
...
<config-file>system/hibernate/postgresql.hibernate.cfg.xml</config-file>
...

NOTA: no olvidar de editar el archivo postgresql.hibernate.cfg.xml sí la base de datos está en otro servidor

8. Editar el archivo applicationContext-spring-security-hibernate.properties y cambiar la configuración de conexión a PostgreSQL como se muestra a continuación:
jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://127.0.0.1:5432/hibernate
jdbc.username=hibuser
jdbc.password=password
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

9. En la base de datos quartz crear la siguiente tabla:
CREATE TABLE "QRTZ"
(
NAME VARCHAR(200) NOT NULL,
PRIMARY KEY (NAME)
);

ALTER TABLE "QRTZ" OWNER TO pentaho_user;

10. Editar el archivo repository.xml de Jackrabbit en el directorio \biserver-ce-5.2\pentaho-solutions\system\jackrabbit. Realizar los siguientes pasos para apuntar Jackrabbit al repositorio de base de datos creado en PostgreSQL:

  • Configuración del FileSystem: descomentar de la línea 61 a la 68. Comentar de la línea 71 a la 73
  • Configuración del DataStore: descomentar de la línea 114 a la 125. Comentar la línea 129
  • Configuración del Workspace: descomentar de la línea 214 a la 221. Comentar de la línea 225 a la 227. Descomentar de la línea 262 a la 269. Comentar de la línea 273 a la 276
  • Configuración del Versionamiento: descomentar de la línea 344 a la 351. Comentar de la línea 354 a la 356. Descomentar de la línea 392 a la 399. Comentar de la línea 402 a la 405

11. Reiniciar el servidor de BI de Pentaho

Consideraciones Importantes

En sistemas operativos Windows, sí se ejecutó biserver antes de realizar ésta configuración usando la base de datos por defecto HSQLDB, es conveniente eliminar el contenido de los siguientes directorios para evitar comportamientos inesperados:

  • \biserver-ce-5.2\tomcat\work\Catalina\*
  • \biserver-ce-5.2\tomcat\temp\*
  • \biserver-ce-5.2\pentaho-solutions\system\osgi\cache\*
  • \biserver-ce-5.2\pentaho-solutions\system\jackrabbit\repository

NOTA: de preferencia igual limpiar el cache del navegador web con el que se esté trabajando.