AnswerBun.com

Actualizar datos en SSIS

Stack Overflow en español Asked by Guillermo Ricardo Spindola Bri on September 11, 2020

Tengo un paquete con SSIS y estoy haciendo una carga incremental de datos haciendo uso de la transformación de Lookup. Obviamente los datos que no existen en el destino se insertan, pero estoy haciendo una validación para los datos existentes que es la siguiente:

(ISNULL(ApellidoM) != ISNULL(apellidom_d) 
  || ISNULL(ApellidoP) != ISNULL(apellidop_d) || ISNULL(Area) != ISNULL(area_d) 
  || ISNULL(Direc_Deleg_Munic) != ISNULL(direc_deleg_munic_d) || ISNULL(Direc_Estado) != ISNULL(direc_estado_d) 
  || ISNULL(es_interno) != ISNULL(es_interno_d) || ISNULL(Nombre) != ISNULL(nombre_d) 
  || ISNULL(Puestos) != ISNULL(puesto_d) || ISNULL(num_empleado) != ISNULL(num_emp_d) 
  || ISNULL(fecha_ingreso) != ISNULL(fec_ingreso_d) || ISNULL(fecha_planta) != ISNULL(fec_planta_d) 
  || ISNULL(fecha_baja) != ISNULL(fec_baja_d) || ISNULL(ccostos_asignado) != ISNULL(ccostos_asignado_d)
  || ISNULL(tipo_emp) != ISNULL(tipo_emp_d))

Lo que significa que si cambia cualquiera de esos valores pase a la siguiente transformación. Estoy cambiando datos forzosamente pero no detecta ningún cambio. Será que estoy mal en algo ?

One Answer

La comprobación está mal, el ISNULL() devuelve un booleano, es decir, true o false por lo que, aunque fuerces cambios en los datos, el valor del ISNULL() es el mismo porque contiene datos por tanto, se está comparando True != True.

Para hacer la comprobación correctamente debes de quitar la parte del ISNULL() para que compare realmente el valor de cada columna.

De todas formas, hay una manera mejor de hacer esto que quieres y es mediante un hash. Generas un hash de todas las columnas menos las claves primarias (que no cambian) y esto te crea una nueva columna (tendrás que crearla en la tabla destino) con el valor. Después, con el componente Lookup recuperas esta columna de la tabla destino y comparas el hash creado en ejecución con el que está almacenado en la tabla y si el hash es distinto es que ha cambiado alguna columna y si no existe en destino pues sería una operación insert.

Aquí te dejo el link del componente de SSIS MultipleHash: https://github.com/keif888/SSISMHash/releases

Answered by kilianbs on September 11, 2020

Add your own answers!

Related Questions

Pregunta sobre el siguiente algoritmo de Dijkstra en Python

0  Asked on February 3, 2021 by estudiante

 

tengo el siguiente problema con este codigo

0  Asked on February 2, 2021 by israel-hidalgo

 

PHP OOP Clase multiple de search mysql

0  Asked on February 2, 2021 by nebulacrypt

   

No redireccionar al Home , al registrar usuario en laravel

1  Asked on February 2, 2021 by felipe-andres-larraguibel-aray

   

abrir dos ventanas modal

1  Asked on February 2, 2021 by asas

   

Convertir Query con select dentro de Select

1  Asked on February 2, 2021 by roberto-canela

     

ld returned 1 exit status Error

3  Asked on February 1, 2021 by juan-fernando-taipe-meza

 

¿Por qué no se aplica minmax() correctamente?

1  Asked on February 1, 2021 by david-paucar

   

Conectar base de datos con php

2  Asked on February 1, 2021 by hernanjs

   

Cómo borro un login banner?

0  Asked on February 1, 2021 by deimos-ff

 

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir