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 ?
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP