Descrição:
Como posso configurar corretamente uma consulta utilizada no Interface Database?
Solução:
A etapa de criação das consultas SQL em um Interface Database é muito importante, sendo fundamental sua correta configuração para que a leitura seja feita conforme o desejado e que não comprometa seu desempenho. As consultas do Interface Database são responsáveis por coletar os dados de uma tabela, por exemplo, e disponibilizá-los através de Endereços, para que então sejam importados no EPM como Basic Variables (tags). Para que a consulta tenha um bom desempenho, é muito importante que, entre outros fatores, sejam coletados apenas os dados novos, ou seja, os registros já lidos não precisam mais serem retornados. Para isso, deve-se adicionar na consulta a cláusula WHERE junto com uma “variável de controle”, afim de evitar essa coleta desnecessária.
Na tabela exemplo abaixo, o campo ID é auto incremental:
Podemos então usar duas formas de consulta. Uma delas é fazendo o controle através do próprio campo DataHora.
Neste caso, o nome da variável de controle (que inicia com @) deve obrigatoriamente ter o mesmo nome da coluna que está sendo usada no WHERE, conforme marcado em vermelho. Simplificando, apenas os registros maiores que a última DataHora lida serão coletados. Com isso, a consulta se torna mais leve, não sobre carregando a fonte dos dados. Tanto a coluna DataHora quanto a Valor serão posteriormente mapeadas para um endereço do Interface.
Uma outra forma de consulta é através do controle via campo ID.
Assim como no exemplo anterior, o nome da variável de controle (que inicia com @) deve obrigatoriamente ter o mesmo nome da coluna que está sendo usada no WHERE. Nesse caso, mesmo que o campo ID não seja mapeado para um endereço, é necessário adicioná-lo também na cláusula SELECT, conforme destacado em vermelho.
Além disso, a cláusula ORDER BY também é importante, e deve ser utilizada sempre. Com esses cuidados, serão retornados apenas os registros ainda não coletados, melhorando o desempenho da consulta.
NOTA: Dependendo da fonte dos dados, a sintaxe da consulta pode variar.