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.