Chave sintética
Antes de falar sobre chaves sintéticas, vamos dar uma olhada em um modelo de dados QV típico (no diagrama à direita). Aqui, podemos ver três tabelas "Vendas", “Atribuição de Filial” e “$ Syn 1 ″. Mas, Eu só carreguei duas tabelas (Vendas e Mapeamento de Filiais) no QlikView. Outra surpresa aparece quando olho de perto as tabelas de “Vendas” e “Mapeamento de filial”. Há um variávelEm estatística e matemática, uma "variável" é um símbolo que representa um valor que pode mudar ou variar. Existem diferentes tipos de variáveis, e qualitativo, que descrevem características não numéricas, e quantitativo, representando quantidades numéricas. Variáveis são fundamentais em experimentos e estudos, uma vez que permitem a análise de relações e padrões entre diferentes elementos, facilitando a compreensão de fenômenos complexos.... adicional “$ Syn 1” em ambas as tabelas.
Quando encontrei pela primeira vez esse efeito no modelo de dados, Não consegui identificar porque isso estava acontecendo. Até certo ponto, isso não me incomodou devido à saída do painel funcionando bem. Mas, quando meu mentor olhou para este modelo, eu sabia “$ Syn 1” é uma chave sintética e “$ Syn 1 Mesa” é uma placa sintética.
O que são chaves ou tabelas sintéticas?
Quando carregamos duas tabelas com um nome de campo comum em ambas as tabelas, as tabelas são associadas automaticamente com base em campos comuns. Esta é a funcionalidade associativa do QlikView.
Apesar disto, quando temos mais de um campo comum entre duas ou mais tabelas, O QlikView cria "CHAVES SINTÉTICAS" e "TABELA SINTÉTICA". QlikView adiciona uma tabela sintética (como mesa $ Syn) e uma chave sintética (Como um símbolo $ Syn) para o modelo de dados. As chaves são adicionadas a tabelas carregadas pelo usuário e usadas para uni-las à tabela sintética.
A chave sintética é o método do QlikView para lidar com chaves compostas. A tabela sintética contém uma chave sintética que é uma composição de todas as combinações dos vários campos-chave que conectam as tabelas. Em nosso modelo de dados, nós tínhamos dois campos comuns, “Rama” e “Região”, então o QlikView criou a chave sintética e a tabela sintética por conta própria. Se olharmos para a visualização da tabela de origem do visualizador de tabela, mostra que dois campos estão conectados entre essas duas tabelas.

As chaves sintéticas são boas ou ruins??
De acordo com o manual de referência do QlikView:
Quando o número de chaves compostas aumenta / sintético, dependendo da quantidade de dados, a estrutura da mesa e outros fatores, O QlikView pode ou não manipulá-los corretamente. O QlikView pode acabar usando uma quantidade excessiva de tempo e / ou memória. Infelizmente, limitações reais são virtualmente impossíveis de prever, o que deixa apenas tentativa e erro como um método prático para determiná-los.
- Este é um dos motivos pelos quais muitas pessoas excluem chaves sintéticas. Mas esta declaração é aplicável quando você tem várias chaves sintéticas em seu modelo de dados. Apesar disto, se o seu modelo de dados tiver várias chaves sintéticas, provavelmente há um gargalo sério com seu modelo de dados e não com as chaves sintéticas.
- Quando você tem duas ou mais tabelas e eles têm vários campos comuns, chaves sintéticas criam a solução correta, compacto e eficiente. As chaves sintéticas não são a razão para problemas de desempenho e memória. Em geral, eles funcionam um pouco melhor ou semelhante, em comparação com chaves compostas manuais, que geralmente são usados para excluir chaves sintéticas.
- Em uma das instâncias, Lembrei-me que um dos meus colegas mencionou que por causa da chave sintética, a saída do modelo de dados não está sendo exibida corretamente ou há um gargalo de desempenho, mas quando você remove as chaves sintéticas, está funcionando bem. Aqui, o verdadeiro problema não eram as chaves sintéticas, era um modelo de dados pobre e, ao excluir chaves sintéticas, melhorou. No momento, não tenho detalhes de comparação de desempenho e memória com ou sem chaves sintéticas (se tem, por favor compartilhe).
Por que devemos excluir as chaves sintéticas?
como dito anteriormente, chaves sintéticas podem ser criadas devido à modelagem de dados pobre. Sempre que um chave sintética inesperada é criado, devemos olhar para o modelo de dados novamente, faça as mudanças necessárias e, como consequência, acabamos com um bom modelo de dados. Observe que a palavra-chave importante na última declaração é INESPERADO. Caso contrário, chaves sintéticas não fazem mal.
A segunda razão, o que percebi com o tempo é que sempre que crio minhas próprias chaves compostas em vez de chaves sintéticas, Eu tenho muito mais clareza sobre o modelo de dados.
Caso contrário, Posso dizer que as chaves sintéticas são boas e fornecem facilidade para lidar com chaves compostas se você estiver trabalhando em um bom modelo de dados.
Como excluir chaves sintéticas?
Para excluir chaves sintéticas, primeiro olhamos nosso modelo de dados e fazemos as mudanças necessárias, Sim é necessário. Temos vários métodos para excluir chaves sintéticas, mas depende do requisito.
- Removendo campos: Quando os campos comuns que geram chaves sintéticas não são necessários no modelo de dados e isso não afeta o link entre duas tabelas. A remoção do campo pode ser feita comentando ou removendo o campo do script de carregamento.

- Renomear campos (usando RATE): Quando os campos comuns que geram chaves sintéticas não são o mesmo campo (não contém valores semelhantes), estes são, na verdade, campos diferentes com o mesmo nome. A mudança do nome pode ser feita por meio da cláusula “COMO”. Também podemos conseguir isso por meio do uso da instrução RATE.. Com uma declaração qualificada, os nomes dos campos são convertidos para o formato “TableName.FieldName”
Usando QUALIFY
- Teclas numéricas automáticas / composto: Quando sabemos que os campos comuns que geram chaves sintéticas são importantes para o modelo de dados, podemos criar nossa própria chave para lidar com chaves compostas. Também podemos usar as funções Autonumeração / Autonumberhash128 / Autonumberhash256 para criar chaves compostas. Isso criará um valor de bit único para cada combinação distinta das colunas concatenadas. Autonumberhash128 e Autonumberhash256 criam valores de 128 bits y 256 bits respectivamente. Observe que a numeração automática pode ser problemática em aplicativos que geram arquivos QVD para uso em outros aplicativos QlikView..

- Também temos outros métodos para excluir chaves sintéticas, como “Crie uma tabela de links“,”Crie junções explícitas ” e “Concatenar tabelas semelhantes“. Esses tópicos precisam ser discutidos em detalhes e iremos explorá-los no futuro..
Nota final:
Em geral, os desenvolvedores desejam excluir as chaves sintéticas porque se acredita que elas têm um impacto negativo no desempenho e na utilização da memória. Apesar disto, isso não é verdade. Eles lidam com chaves compostas de uma forma mais eficiente em comparação com chaves manuais, se tivermos um bom modelo de dados. Se você experimentou a diferença no desempenho e na utilização da memória com ou sem sintéticos, compartilhe suas idéias nos comentários abaixo, uma vez que irá beneficiar a comunidade.



