Saludos, en SSIS comparar dos columnas en un conditional split que pueden contener valores no es tan simple como usar el operador de igualdad (==) si se intenta eso no se generan errores en tiempo de diseño pero generará errores al momento de ejecutar el paquete dado que la comparación nula con un valor da un resultado desconocido.
Para solventar esta situación analizamos los casos que se pueden presentar al evaluar la condición
Origen | Destino |
ORIGEN_Columna | DESTINO_COLUMNA |
Vamos caso por caso
Caso | Expresión | ¿Son iguales? |
Las dos columnas son nulas | ((ISNULL([ORIGEN_Columna]) && ISNULL([DESTINO_COLUMNA])) ? TRUE | Si |
Una de las dos columnas es nula | ((ISNULL([ORIGEN_Columna]) || ISNULL([DESTINO_COLUMNA])) ? FALSE | No |
Ninguna es nula, comparar valor | ([ORIGEN_Columna] == [DESTINO_COLUMNA]) | Sí, si los valores son iguales |
La expresión final sería
((ISNULL([ORIGEN_Columna]) && ISNULL([DESTINO_COLUMNA])) ? TRUE : ((ISNULL([ORIGEN_Columna]) || ISNULL([DESTINO_COLUMNA])) ? FALSE : ([ORIGEN_Columna] == [DESTINO_COLUMNA])))
Existen otras opciones como REPLACENULL el cuál permite emitir un valor en caso que el primer valor sea NULO, sin embargo considero que la expresión evaluando nulos es más rápida dado que no requiere instanciar un nuevo valor
Espero sea de ayuda
FREDDY LEANDRO ANGARITA CASTELLANOS
Data platform MVP
@flacMVP