Reemplazo de SQL y memoria caché de búsqueda dinámica
Reemplazo de SQL y memoria caché de búsqueda dinámica
Puede añadir una cláusula WHERE en la consulta de búsqueda para filtrar los registros utilizados para generar la memoria caché y para realizar una búsqueda en la tabla de base de datos para una búsqueda no almacenada en caché. Sin embargo, el servicio de integración no utiliza la cláusula WHERE al insertar filas en una memoria caché dinámica.
Cuando añada una cláusula WHERE en una transformación de búsqueda mediante una memoria caché dinámica, conecte una transformación de filtro antes de la transformación de búsqueda para filtrar las filas que no desea insertar en la memoria caché o en la tabla de destino. Si no incluye la transformación de filtro, podría obtener resultados inconsistentes entre la memoria caché y la tabla de destino.
Por ejemplo, quiere configurar una transformación de búsqueda para realizar una búsqueda dinámica en la tabla de empleados, EMP, de las filas coincidentes por EMP_ID. Puede definir el siguiente reemplazo de SQL de búsqueda:
SELECT EMP_ID, EMP_STATUS FROM EMP ORDER BY EMP_ID, EMP_STATUS WHERE EMP_STATUS = 4
Cuando se ejecuta por primera vez la
asignación
de , el servicio de integración genera la memoria caché de búsqueda a partir de la tabla de destino según el reemplazo de SQL de búsqueda. Todas las filas de la memoria caché coinciden con la condición de la cláusula WHERE,
EMP_STATUS = 4
.
Por ejemplo, el servicio de integración lee una fila de origen que cumple la condición de búsqueda que ha especificado, pero el valor de EMP_STATUS es de 2. Aunque el destino podría tener la fila en la que EMP_STATUS es 2, el servicio de integración no encuentra la fila en la memoria caché debido al reemplazo de SQL. El servicio de integración inserta la fila en la memoria caché y pasa la fila para la tabla de destino. Cuando el servicio de integración inserta esta fila en la tabla de destino, podría obtener resultados inconsistentes cuando la fila ya existe. Además, no todas las filas de la memoria caché coinciden con la condición de la cláusula WHERE en el reemplazo de SQL.
Para comprobar que solo se insertan filas en la memoria caché que coinciden con la cláusula WHERE, añada una transformación de filtro antes de la transformación de búsqueda y defina la condición de filtro como la condición de la cláusula WHERE en el reemplazo de SQL de búsqueda.
Para el ejemplo anterior, introduzca la siguiente condición de filtro en la transformación de filtro y la cláusula WHERE en el reemplazo de SQL: