Você pode adicionar uma cláusula WHERE à consulta de pesquisa para filtrar os registros usados para criar o cache e executar uma pesquisa na tabela de banco de dados para uma pesquisa sem cache. No entanto, o Serviço de Integração não usa a cláusula WHERE ao inserir linhas em um cache dinâmico.
Ao adicionar uma cláusula WHERE a uma transformação de Pesquisa usando cache dinâmico, conecte uma transformação Filtro antes da transformação de Pesquisa para filtrar linhas que você não queira inserir na tabela de destino ou do cache. Se você não incluir a transformação Filtro, poderá obter resultados inconsistentes entre o cache e a tabela de destino.
Por exemplo, você configura uma transformação de Pesquisa para realizar uma pesquisa dinâmica na tabela de funcionários EMP, correspondendo linhas por EMP_ID. Você define a seguinte substituição SQL de pesquisa:
SELECT EMP_ID, EMP_STATUS FROM EMP ORDER BY EMP_ID, EMP_STATUS WHERE EMP_STATUS = 4
Quando você executa pela primeira vez a , o Serviço de Integração cria o cache de pesquisa da tabela de destino com base na substituição SQL de pesquisa. Todas as linhas no cache corresponderão à condição na cláusula WHERE,
EMP_STATUS = 4
.
Por exemplo, o Serviço de Integração lê uma linha de origem que atende à condição de pesquisa especificada, mas o valor de EMP_STATUS é 2. Embora o destino possa ter a linha onde EMP_STATUS é 2, o Serviço de Integração não encontra a linha no cache devido à substituição SQL. O Serviço de Integração insere a linha no cache e passa a linha para a tabela de destino. Quando o Serviço de Integração inserir essa linha na tabela de destino, você deverá ter resultados consistentes se a linha já existir. Além disso, nem todas as linhas do cache correspondem à condição da cláusula WHERE na substituição SQL.
Para verificar se você inseriu no cache apenas linhas que correspondam à cláusula WHERE, adicione uma transformação Filtro antes da transformação de Pesquisa e defina a condição de filtro como a condição na cláusula WHERE na Substituição SQL de Pesquisa.
Para o exemplo acima, digite a seguinte condição de filtro na transformação Filtro e a cláusula WHERE na substituição SQL: