Open Business Intelligence

La red del Business Intelligence

Problema con realizar un ETL de con varias entradas de tablas y una sola tabla de salida

 

Estimados.

 

Necesito ayuda urgente, estoy terminando mi trabajo de titulo, y me falta hacer unos etl para llenar una tabla, estos datos los saco de distintas tablas de entradas, son como 4 o 5 tablas, el problema es que la cantidad de tablas de origen es una sola y cuando las uno me tira la siguiente advertencia:

 

We detected rows with varying number of fields, this is not allowed in a transformation.  The first row contained 3 fields, another one contained 1 : [id_sitm Integer(2)]

 

esto es para el caso de una sola union en particular.

Después realizo bien el mapeo de los campos de origen con los de entrada.

Ahora cuando trato de realizar la trasformacion, me arrojan los siguientes errores en el log:

 

2011/01/07 18:08:04 - gruitm entrada.0 - Finished processing (I=18, O=0, R=0, W=18, U=0, E=0)
2011/01/07 18:08:04 - Table output.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Unexpected error :
2011/01/07 18:08:04 - Table output.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : org.pentaho.di.core.exception.KettleStepException:
2011/01/07 18:08:04 - Table output.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Field [cod_item] is required and couldn't be found!
2011/01/07 18:08:04 - Table output.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : org.pentaho.di.trans.steps.tableoutput.TableOutput.processRow(TableOutput.java:95)
2011/01/07 18:08:04 - Table output.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : org.pentaho.di.trans.step.RunThread.run(RunThread.java:40)
2011/01/07 18:08:04 - Table output.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : java.lang.Thread.run(Thread.java:662)
2011/01/07 18:08:04 - t_bal entrada.0 - Finished reading query, closing connection.
2011/01/07 18:08:04 - Table input id.0 - Finished reading query, closing connection.
2011/01/07 18:08:04 - fin21_pt_item.0 - Finished processing (I=115, O=0, R=0, W=115, U=0, E=0)
2011/01/07 18:08:04 - ccxc entrada.0 - Finished processing (I=8, O=0, R=0, W=8, U=0, E=0)
2011/01/07 18:08:04 - Table input id.0 - Finished processing (I=115, O=0, R=0, W=115, U=0, E=0)
2011/01/07 18:08:04 - t_bal entrada.0 - Finished processing (I=2, O=0, R=0, W=2, U=0, E=0)
2011/01/07 18:08:04 - Table output.0 - Finished processing (I=0, O=0, R=1, W=0, U=0, E=1)
2011/01/07 18:08:04 - Spoon - The transformation has finished!!
2011/01/07 18:08:04 - Transformación cxc de entrada local a serv k2 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Errors detected!
2011/01/07 18:08:04 - Transformación cxc de entrada local a serv k2 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Errors detected!
2011/01/07 18:08:04 - Transformación cxc de entrada local a serv k2 - Transformación cxc de entrada local a serv k2
2011/01/07 18:08:04 - Transformación cxc de entrada local a serv k2 - Transformación cxc de entrada local a serv k2

me indica que hay problemas

 

Field [cod_item] is required and couldn't be found!

Sin embargo si obtengo ese campo, en la previsualizacion de la consulta a la tabla de origen si me los muestra.. y no se que hacer.... de antemano muchas gracias, necesito ayuda urgente con eso.

 

atte.

Carlos H

Visitas: 4942

Responde a esto

Respuestas a esta discusión

Hola Carlos.

El problema que te está ocurriendo es que no se pueden unir dos flujos diferentes con distinto número de campos. Kettle no sabe lo que hacer con un flujo que tiene 3 campos y otro flujo que tiene dos campos, etc.

Eso por parte de Kettle. Por tu parte, no veo sentido a lo que quieres hacer, me falta información. Entiendo que esos 5 flujos de origen deben de tener algún campo en común mediante el cual puedas relacionar los diferentes registros de las distintas tablas de entrada ¿no?, porque si no es así no sé cómo quieres insertar los campos de las 5 tablas en la tabla de salida:

- ¿Quieres insertar la suma de los campos de los 5 registros leidos en un único registro de la tabla de destino?

- ¿Quieres insertar cada registro de las tablas de origen como registros independientes en la tabla de destino?

 

No sé, necesito más datos. Yo creo que lo más lógico, sin saber que es lo que estás intentando hacer, sería que existiera una relación, un campo clave entre las cinco tablas de entrada. De esta forma, haciendo un cruce mediante ese campo clave se unen todos los campos de entrada de los cinco flujos y se convierten en un único flujo que ya se puede enlazar con el paso de salida a tabla. Este cruce se hace mediante el paso "Unión por clave" determinando el campo o los campos mediente los cuales se hará el cruce. Es muy importante que los flujos estén ordenados por este campo o campos claves antes de llegar a este paso de union.

No sé si es esto lo que necesitas?. Si quieres explicarme mejor que es lo que quieres hacer a lo mejor te puedo ayudar mejor.

Un saludo.

 

A ver....

 

2011/01/07 18:08:04 - Table output.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Field [cod_item] is required and couldn't be found!

 

... el error informa que en la Table output (tabla de salida) no existe el campo cod_item, que es necesario.

 

Sugerencia: en la ventana de propiedades del objeto Table Output hay un botón llamado SQL.  Por él podrás crear la tabla de salida, hacer cambios de la estructura de la tabla de salida, como tambíen editar el script y crear indices de la tabla, etc. Al presionar este botón, el Kettle solo trairá al script lo que sea necesario hacer en el database de DW (de la tabla de salida). Deja para presionarlo por último, pues el Kettle irá rellenar la ventana de script SQL con las informaciones que habrás puesto en las propiedades de esta ventana.

 

Vicente de Paula :)

Mucha gracuas pude solucionar esto, erra un error muy tonto, el id de la tabla de destino no estaba como auto_increment por lo que no permitia ingresar registros sin ingresar un ID, lo arregle pero igual todo lo que estaba haciendo está mal, tuve que hacer una viste de una consulta para asi poder hacer bien las relaciones y hacer el etl.

muchisimas gracias de todos modos, estoy empezando en el tema de BI y me interesa mucho especializarme en esto ahora a lo que termine mi carrera. hacer proyectos y espero encontrar algun trabajo relacionado con esto.+

saludos..



Vicente de Paula dijo:

A ver....

 

2011/01/07 18:08:04 - Table output.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Field [cod_item] is required and couldn't be found!

 

... el error informa que en la Table output (tabla de salida) no existe el campo cod_item, que es necesario.

 

Sugerencia: en la ventana de propiedades del objeto Table Output hay un botón llamado SQL.  Por él podrás crear la tabla de salida, hacer cambios de la estructura de la tabla de salida, como tambíen editar el script y crear indices de la tabla, etc. Al presionar este botón, el Kettle solo trairá al script lo que sea necesario hacer en el database de DW (de la tabla de salida). Deja para presionarlo por último, pues el Kettle irá rellenar la ventana de script SQL con las informaciones que habrás puesto en las propiedades de esta ventana.

 

Vicente de Paula :)

Responder a debate

RSS

Distintivo

Cargando…

© 2024   Creado por Emilio.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio