Chaves sintéticas

Quando duas ou mais tabelas internas tiverem dois ou mais campos em comum, isso implicará um relacionamento de chave composta. O QlikView resolve isso por meio da criação automática de chaves sintéticas. Essas chaves são campos anônimos que representam todas as combinações ocorridas da chave composta.

Caso você receba um aviso sobre chaves sintéticas quando carregar os dados, é recomendado que você revise a estrutura de dados na visão das tabelas. Você deve se perguntar se o modelo de dados está ou não correto. As vezes está correto, mas, em geral, a chave sintética está lá devido a um erro no script.

Chaves sintéticas múltiplas geralmente são um sintoma de um modelo de dados incorreto, mas não necessariamente. Contudo, chaves sintéticas baseadas em outras chaves sintéticas é um sinal certo de um modelo de dados incorreto.

Aviso: Quando o número de chaves sintéticas aumenta, dependendo das quantidades de dados, da estrutura da tabela e de outros fatores, o QlikView pode ou não lidar com elas de forma ágil, o que pode terminar usando uma quantidade excessiva de tempo e/ou de memória. Em tal caso, será preciso retrabalhar seu script e remover todas as chaves sintéticas.

Tratamento de chaves sintéticas

Se precisar evitar chaves sintéticas, há diversos modos de resolver isso no script de carregamento:

  • Verifique se apenas os campos que vinculam logicamente as duas tabelas são usados como chaves.

    • Campos como “Comentários”, “Notas” e “Descrição” podem existir em diversas tabelas sem que haja qualquer relação e, portanto, não devem ser usados como chaves.
    • Campos como “Data”, “Empresa” e “Nome” podem existir em diversas tabelas e possuir valores idênticos, embora com funções diferentes (Data do Pedido/Data de Envio, Empresa Consumidora/Empresa Fornecedora). Em tais casos, eles não devem ser usados como chaves.
  • Certifique-se de que os campos redundantes não sejam usados – de que apenas os campos necessários sejam conectados. Por exemplo, se uma data for usada como chave, certifique-se de não carregar ano, mês ou dia_do_mês da mesma data de mais de uma tabela interna.

  • Se necessário, forme suas próprias chaves não compostas, usando normalmente a concatenação de caracteres dentro de uma função do script AutoNumber.