Answered Utilizar campos de varios origenes de datos

  • miércoles, 27 de octubre de 2010 1:14
     
     

    Buen día,

     

    En relación al tema http://social.msdn.microsoft.com/Forums/es-ES/ssises/thread/3c57dba2-80eb-4f76-b20b-d74e5b25b27c , he podido crear obtener la relación y el id de cada elemento que necesito par guardar en la bd, sin embargo, no he podido subirlo a la bd.

     

    Por este motivo, decidí crear un archivo plano para el resultado de cada catálogo con la posibilidad de unirlos en un punto previo a la carga hacia la bd, de tal manera que los archivos planos se conviertan en uno y éste quede con los campos en el orden que requiero.

     

    Es decir, de un catalogo, tengo un archivo plano donde almaceno la relación obtenida con la transformación de lookup, y así con los datos que requiero obtener de catalogos.

     

    Despúes estos archivos planos los quiero leer de tal manera que si en el archivo original tengo 16 registros me lea cada uno de los archivos y concatene los campos en un solo archivo con los 16 registros y todos los campos que corresponden a la bd.

     

    Creo que la transformación a utilizar el el Merge Join, el cual me permite (o hasta donde entiendo) seleccionar los campos que requiera de dos flujos de datos y unirlos y si es necesario la salida de ese Merge Join utilizarla en otro Merge Join para seguir concatenando campos hasta tenerlos todos en un solo archivo, el cual finalmente tendrá el formato y los valores que necesito guardar.

     

    Sin embargo, no logro hacerlo, ya que solo me pone uno o dos campos del primer Merge Join y todos los demás los elimina, esto sucede cuando utilizo Left Outer Join, cuando utilizo el inner join la salida está en blanco y cuando utilizo el full outer join la salida es un archivo con el numero de origenes de datos por el numero de registros en cada origen de datos lo cual no me sirve.

     

    Si alguien puede ayudarme se los agradeceré.

     

    Saludos y gracias

Todas las respuestas

  • miércoles, 27 de octubre de 2010 3:20
    Moderador
     
     Respondida

    Hola Ulster.

    Creo que no necesitas hacer ficheros planos en absoluto, salvo que yo me haya perdido.

    Si te entiendo bien (despues de leer los dos hilos)

    Tu objetivo es leer unas hojas excel, en las que hay información variada:

    De una parte están las tablas digamos "maestras", en las que están los campos de código y descripción.  (no tengo muy claro si estas están en las hojas de excel o en otro sitio)

    De otra tu hoja de excel original, en la que solo están los descriptores de los que has de obtener el código.

    La solución que yo haría

    1.- Crearía un flujo de datos para rellenar cada tabla maestra (este paso no es necesario si estas tablas se mantienen solas o no necesitan mantenimiento).

    2.- El flujo principal, leería la hoja de excel haciendo lookups a cada una de las maetras, asegurandome de que esos lookups tienen puesto que no falle en caso de error.

     

    3.- Al final de todos los lookups, pondría un OleDB Destination conectado a la BBDD de destino que necesite grabando la información.

     

    El problema que estás describiendo del merge join eso pasa porque por el campo que estas haciendo la unión o bien no está bien ordenado o bien no coincide ninguna fila.

     

    Espero que te ayude.

     


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    • Propuesto como respuesta qwalgrandeMVP, Moderator miércoles, 27 de octubre de 2010 10:39
    • Marcado como respuesta Ulster martes, 09 de noviembre de 2010 19:32
    •  
  • viernes, 29 de octubre de 2010 14:22
     
     

    Ok, ya tengo los lookups y he agregado un OleDB al final de cada uno, pero al ejecutar el paquete, este falla, dado que solo estoy introduciendo unos campos  de la tabla detalle, en esa tabla tengo campos que no pueden ser null y es ahí donde falla, además de que hay campos que requiero pasar directamente del excel a la base de datos sin lookup, no forman o no tienen relación con ningún catalogo.

     

    Como puedo hacer para que se graben los datos sin tener el problema de los campos null?

     

    Puedo ejecutar un comando SQL que me lea los datos del excel e inserte los datos en la base de datos haciendo en el mismo comando la relación a las tablas maestras?

     

    Sin más por el momento, agradezco su atención.

     

     

  • jueves, 04 de noviembre de 2010 15:20
     
     

    Hola. Siguiendo el diagrama de flujo de datos propuesto por Miguel, introduce una columna derivada antes del Destino OLEDB para el tratamiento de los campos nulos. Uno de los motivos de tener nulos puede ser la configuración de los lookups. Si configuras la opción 'Ignorar error' para las filas sin match, el campo se añade al flujo con contenido nulo. Puede ser conveniente utilizar la opción 'Redirigir filas a resultados no coincidentes' o algo así y darles un tratamiento para estos casos.

    Si no me perdí por el camino, los datos que obtienes al leer el excel como origen de datos se mantienen en el flujo. Los puedes utilizar tal cual vienen o convirtiendo los tipos si difieren de la tabla destino.

    Un saludo!


    Víctor M. Sánchez García (ES) (BI) Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it.