Open Business Intelligence

La red del Business Intelligence

Diferentes tipos de BBDD en un solo reporte, ¿Alguien ha intentado hacer algo parecido?

Hola a todos,

Me encuentro en estos momentos realizando una especie de sistema de gestión de informes y estoy integrando con Pentaho Community Edition 5.4.

Mi problema es que al generar un reporte, con el Report Designer, yo le puedo poner varios DataSources y definir las consultas que usaré en cada uno de ellos, pero al final he de usar solo 1, el que corresponda con el SGDB instalado.

Es como tener, por ejemplo, las soluciones para ORACLE, SQL SERVER y MySQL en un mismo fichero .PRPT, pero lanzar solo la que corresponda dependiendo de algún tipo de configuración.

De otra forma tendría, por ejemplo, 3 soluciones publicadas, una para cada motor de base de datos.

¿Es posible hacerlo? ¿Alguien ha intentado hacer algo parecido?

Gracias.

Visitas: 335

Responde a esto

Respuestas a esta discusión

Buenas Vicente, cómo estás?

Lo que puedes hacer es utilizar conexiones a base de datos de tipo JNDI, así el reporte solo guarda este valor.

Saludos

En un principio es lo que pensé, pero la consulta varía dependiendo del motor de BBDD, por ejemplo por las concatenaciones, operaciones de fecha ... por eso pensé si se podía hacer "una consulta por conexión de BBDD en un mismo reporte".

Si se te ocurre algo más no dudes en comentarmelo, muchas gracias.

Un saludo.

Y si evitas las concatenaciones, operaciones de fechas y demás en la consulta SQL?

Saludos

El problema principal son las funciones específicas de cada motor (DATEDIFF, STR_TO_DATE, ROWNUM, ...) se hace complicado hacer un mismo SQL para todos, sobre todo para ORACLE que es el que más problemas me está dando.

Luego está el tema de los GROUP BY que tampoco usan la misma sintaxis ya que en algunos motores la select tiene que contener todos los elementos y en otros solo los de la agrupación.

Ahora mismo, por optimización, trabajamos con una consulta diferente y optimizada para cada motor.

Muchas gracias Dario, no dudes en responder si se te ocurre algo.

Un saludo.

Si todos los fabricantes siguieran los estándares hacer estas cosas sería más fácil, y Oracle es justamente uno de los que más respetan la compatibilidad con el estandar. Para encontrar la sintaxis que debería parecerse más en todos los motores tendrían que consultar la definición del estandar. Te enlazo un documento con la sintaxis de SQL-92 que te puede ayudar:

http://dis.um.es/~jfernand/0607/fbd/sql.pdf

Otra opción que podrías probar es conectar con PRD sólo con un motor, y en esa base de datos tener definidos enlaces a las tablas que necesites de las demás, con lo que desde PRD sólo tendrías que utilizar la sintaxis de un motor.

Yo he utilizado a veces dblinks de Oracle que recogen datos de tablas de SQL Server, y también de MySQL. Te enlazo un post sobre cómo definir en Oracle un database link hacia otros motores, es antiguo, pero seguro que aún funciona, o puede que ahora sea aún más fácil..

Otra alternativa que tienes es utilizar PDI para traer tus datos, en este caso pondrias 3 table input, uno por cada fuente de datos, luego los unes y luego puedes hacer 2 cosas, utilizar el paso pentaho reporting que te permite llamar el reporte desde PDI, o guardas la transformación es ese punto y luego la utilizas como fuente de datos en el Pentaho Report Designer.

Espero haberte ayudado.

mi recomendacion es que hagas exactamente lo que dice Ricardo Rincon  pues con PDI podes tener por cada base de datos diferentes tablas y hacerles diferentes consultas y luego de que filtres todos los datos de todas las bases que querras podes crear una tabla con todos los campos obtenidos y solo llamarla o enviar los datos directamente a report designer. creo que esa es la mejor opcion

Responder a debate

RSS

Distintivo

Cargando…

© 2019   Creado por Emilio.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio