QlikView - Referência circular
Circular Referenceocorre quando podemos atravessar de uma tabela para outra usando dois ou mais caminhos diferentes. Isso significa que você pode juntar a Tabela1 com a Tabela2 diretamente usando uma coluna ou você também pode juntar primeiro a Tabela1 com a Tabela3 e depois a tabela3 com a Tabela2. Isso pode levar a um resultado incorreto na saída formada por um modelo de dados, que carrega todas essas três tabelas. O QlikView evita o carregamento de tais dados em sua memória, uma vez que reconhece uma referência circular.
Dados de entrada
Vamos considerar os três arquivos de dados CSV a seguir, que são usados como entrada para outras ilustrações.
SalesCountries:
ProductID,ProductCategory,Country,SaleAmount
1,Outdoor Recreation,Italy,4579
2,Clothing,USA,4125
3,Costumes & Accessories,South Korea,6521
4,Athletics,Japan,4125
5,Personal Care,Brazil,5124
6,Arts & Entertainment,China,1245
7,Hardware,South America,456
8,Home & Garden,Peru,241
9,Food,India,1247
10,Home & Garden,Singapore,5462
11,Office Supplies,Hungary,577
ProductCountry:
ProductID, Country
3,Brazil
3,China
2,Korea
1,USA
2,Singapore
7,Sri Lanka
1,Italy
Carregar Script
Carregamos os dados de entrada acima usando o editor de script, que é invocado pressionando Control+E. Escolha a opçãoTable Files e navegue até o arquivo de entrada.
Carga de Dados
Depois de criar o script acima, carregamos os dados na memória do QlikView usando o comando Control+R. É quando obtemos o prompt de erro mencionando a presença de loop circular nas tabelas que estão sendo carregadas.
Modelo de dados
Para encontrar a causa exata do aviso acima, podemos olhar para o modelo de dados usando o comando de menu para visualizador de tabela - Control+T. A tela a seguir é exibida, mostrando claramente a referência circular. Aqui, a junção entre RegionCountry e SalesRegion pode ser obtida diretamente usando o campoRegion. Isso também pode ser feito indo primeiro para a tabela ProductCountry, usando o campoCountry e mapeando ProdcutID com Salesregion.
Resolução de referência circular
A referência circular acima pode ser resolvida renomeando algumas das colunas nos conjuntos de dados para que o QlikView não forme uma associação entre as tabelas automaticamente usando os nomes das colunas. Para isso, renomearemos a coluna de país em RegionCountry para SalesCountry. No conjunto de dados ProdcuCountry, renomeamos a coluna País para ProductCountry.
Modelo de Dados Retificado
O modelo de dados retificado após renomear a coluna acima pode ser visto usando o comando Control+T. Agora podemos ver que a relação entre as tabelas não forma um loop.
Pressionando Control+R recarregar os dados não nos dá mais o aviso e podemos usar esses dados para criar relatórios.