QlikView – Referencia circular

Enlace circular sucede cuando podemos navegar de una tabla a otra usando dos o más rutas diferentes. Esto significa que puede unir Table1 a Table2 directamente usando una columna, o también puede unir Table1 a Table3 primero y luego table3 a Table2. Esto puede conducir a un resultado incorrecto en la salida generada por el modelo de datos que carga estas tres tablas. QlikView evita que dichos datos se carguen en su memoria después de reconocer la referencia circular.

Los datos de entrada

Echemos un vistazo a 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 la entrada anterior con un editor de secuencias de comandos que se invoca haciendo clic en Ctrl + E… Elige una opcion Archivos de tabla y busque el archivo de entrada.

1_cr_load_script

Cargando datos

Después de crear el script anterior, cargamos los datos en la memoria QlikView usando el comando Ctrl + R… Aquí es cuando obtenemos un error que menciona la presencia de un bucle circular en las tablas que se están cargando.

2_advertencia

Modelo de datos

Para encontrar la causa exacta de la advertencia anterior, podemos echar un vistazo al modelo de datos usando el comando de menú para el visor de tablas: Ctrl + T… Aparece la siguiente pantalla con el enlace circular claramente visible. Aquí la conexión entre RegionCountry y SalesRegion se puede lograr directamente usando el campo Región… Esto también se puede lograr navegando primero a la tabla ProductCountry usando el campo El país y luego mapear el ProdcutID a Salesregion.

3_cr_data_model

Resolución de referencia cíclica

La referencia circular anterior se puede resolver cambiando el nombre de algunas de las columnas en los conjuntos de datos para que QlikView no cree automáticamente enlaces entre tablas usando los nombres de las columnas. Para hacer 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.

4_cr_load_script_rectified

Modelo de datos corregido

El modelo de datos corregido después de cambiar el nombre de la columna anterior se puede ver con el comando Ctrl + T… Ahora podemos ver que las relaciones entre las tablas no forman un bucle.

5_cr_data_model_rectified

Prensado Ctrl + R recargar los datos ya no nos da una advertencia y podemos usar estos datos para generar informes.

🚫