QlikView - Referencia circular

Circular Referenceocurre cuando podemos pasar de una tabla a otra usando dos o más caminos diferentes. Esto significa que puede unir Table1 con Table2 directamente usando una columna o también puede unir primero Table1 con Table3 y luego table3 con Table2. Esto puede conducir a un resultado incorrecto en la salida formada por un modelo de datos, que carga estas tres tablas. QlikView evita la carga de dichos datos en su memoria una vez que reconoce una referencia circular.

Los datos de entrada

Consideremos los siguientes tres archivos de datos CSV, que se utilizan como entrada para más ilustraciones.

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

Cargar script

Cargamos los datos de entrada anteriores usando el editor de scripts, que se invoca presionando Control+E. Elige la opciónTable Files y busque el archivo de entrada.

Carga de datos

Después de crear el script anterior, cargamos los datos en la memoria de QlikView usando el comando Control+R. Aquí es cuando aparece el mensaje de error que menciona la presencia de un bucle circular en las tablas que se cargan.

Modelo de datos

Para encontrar la causa exacta de la advertencia anterior, podemos mirar el modelo de datos usando el comando de menú para el visor de tablas: Control+T. Aparece la siguiente pantalla, que muestra claramente la referencia circular. Aquí, la unión entre RegionCountry y SalesRegion se puede lograr directamente utilizando el campoRegion. También se puede lograr yendo primero a la tabla ProductCountry, usando el campoCountry y luego mapeando ProdcutID con Salesregion.

Resolución de referencia circular

La referencia circular anterior se puede resolver cambiando el nombre de algunas de las columnas en los conjuntos de datos para que QlikView no forme una asociación entre las tablas automáticamente usando los nombres de las columnas. Para esto, cambiaremos el nombre de la columna de país en RegionCountry a SalesCountry. En el conjunto de datos ProdcuCountry, cambiamos el nombre de la columna País a ProductCountry.

Modelo de datos rectificados

El modelo de datos rectificado después de cambiar el nombre de la columna de arriba se puede ver usando el comando Control+T. Ahora podemos ver que la relación entre las tablas no forma un bucle.

Prensado Control+R recargar los datos ya no nos da la advertencia y podemos usar estos datos para crear informes.