Open Business Intelligence

La red del Business Intelligence

Hola estoy aprendiendo a usar Pentaho y en este momento tengo un proyecto donde tengo que leer una base de datos en Mysql donde tengo que contar unos parametros, esta base de datos tiene un campo datetime y tengo que contar estos parametro por lapsos de 5 minutos segun el campo datetime.

Ya logre leer la base de datos y con una sentencia sql ("count(distinct())") cuento los diferentes parametros de toda la base de datos y los imprimo en un excel, pero no he logrado hacer la cuenta en lapsos de 5 minutos como me piden.

Agradezco cualquier ayuda, llevo a penas unas semanas trabajando con Pentaho y la verdad no se mucho.

Visitas: 77

Responde a esto

Respuestas a esta discusión

Hola Diana. No entiendo muy bien lo que necesitas hacer. Si puedes explicarlo mejor, con un ejemplo más descriptivo, quizás te pueda ayudar.

Un saludo.

Hola Ok, voy a tratar de explicarme. Yo tengo una tabla en mysql, mi tabla seria mas o menos asi:

A      B      C  ...   F

2       6       3       2012-01-11 10:24:29

3       6       2       2012-01-11 10:24:29

2       5       3       2012-01-11 10:25:29

1       5       2       2012-01-11 10:26:29

1       6       2       2012-01-11 10:29:29

1       5       2       2012-01-11 10:30:29

2       6       3       2012-01-11 10:30:29

3       5       2       2012-01-11 10:31:29


Esta tabla tiene como 10 campos uno de ellos es de tipo datetime (como el campo F), tengo que contar los registros de 6 campos segun un lapso de tiempo de 5 minutos, este tiempo se tiene que sacar segun el campo F, segun el ejemplo. Es decir entre 2012-01-11 10:24:29 y  2012-01-11 10:29:29 (Han pasado 5 minutos) cuantos registros hay A, B, C .... Pero hay que decir por ejemplo que de A 1=2, A 2=2, A 3=1... B 5=2,B 6=3  y asi sucesivamente con los otros campos y como los siguientes 5 minutos.

Espero me haya explicado bien. Gracias de antemano por cualquier ayuda que me puedan dar.

Hola Diana, ya he comprendido lo que necesitas hacer pero no es un cosa trivial, es complicado para alguien que acaba de empezar con kettle. Te aconsejo que practiques con los ejemplos incorporados junto a la herramienta pdi, a ver si tomas un poco de agilidad, y después seguro que empiezas a ver la luz.

Lo siento, saludos.

Hola Edu, tienes razon y me parece algo bastante complicado, pero la empresa me lo esta solicitando y la verdad estoy haciendo todo lo posible para aprender a hacer algo asi. Te agradeceria cualquier ayuda o si sabes de algun tutorial sobre el tema.

Gracias

edu dijo:

Hola Diana, ya he comprendido lo que necesitas hacer pero no es un cosa trivial, es complicado para alguien que acaba de empezar con kettle. Te aconsejo que practiques con los ejemplos incorporados junto a la herramienta pdi, a ver si tomas un poco de agilidad, y después seguro que empiezas a ver la luz.

Lo siento, saludos.

Hola Diana, voy a intentar orientarte un poco.

Yo haría las siguientes cosas:

1. Crearía una tabla de tipo dimensión donde registrar un registro por cada intervalo de 5 minutos que vas a analizar. La tabla podría tener un aspecto como este

 ID_PERIODO           FECHA_INICIAL            FECHA_FINAL                     DESCRIPCIÓN

       1                        2012-01-11 10:24:29       2012-01-11 10:29:29             2012-01-11 - Entre 10:24:29 y 10:29:29 

       2                        2012-01-11 10:29:29       2012-01-11 10:34:29             2012-01-11 - Entre 10:29:29 y 10:34:29

.....

Y así sucesivamente. Esto lo haría usando como base el ejemplo para creación de dimensiones de fecha que incorpòra PDI. No es exactamente lo mismo pero se puede usar como ejemplo inicial.


Un vez creada esta dimensión continuaría formando el proceso.


Usaría un campo de entrada de datos (Entrada Tabla) para leer las fechas registradas en esta tabla. La salida de este paso sería la entrada de un nuevo paso del mismo tipo de Entrada Tabla que usaría estas fechas (fecha_inicial fecha_final, y también id_periodo)como parámetros de la query, que sería una cosa así:


select

id_periodo,

'A',

distinct(A),

count(*)

from tabla_datos

where F between fecha_inicial and fecha_final

group by A

union

select

id_periodo,

'B',

distinct(B),

count(*)

from tabla_datos

where F between fecha_inicial and fecha_final

group by B

union

select

id_periodo,

'C',

distinct(C),

count(*)

from tabla_datos

where F between fecha_inicial and fecha_final

group by C

.....


Así, una sentencia de tipo union con todas las columnas que quieras contabilizar.

De esta forma tendríamos un resultado final con este aspecto:


PERIODO    NOMBRE_COLUMNA               VALOR                    CANTIDAD

     1                           A                                   1                                2

     1                           A                                   2                                1

     1                           B                                   5                                2

     1                           C                                   3                               7

.................


No sé si esto podría valerte. Espero que sí.

Un saludo.











Edu muchas gracias lo voy a probar y te cuento.

Responder a debate

RSS

Distintivo

Cargando…

© 2012   Creado por Emilio.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio