QlikView – 循环参考

QlikView – 循环参考


当我们可以使用两条或更多条不同的路径从一张表遍历到另一张表时,就会发生循环引用这意味着您可以使用列直接将 Table1 与 Table2 连接,或者您也可以先将 Table1 与 Table3 连接,然后将 table3 与 Table2 连接。这可能会导致加载所有这三个表的数据模型形成的输出结果不正确。一旦识别出循环引用,QlikView 就会阻止将此类数据加载到其内存中。

输入数据

让我们考虑以下三个 CSV 数据文件,它们用作进一步说明的输入。

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

加载脚本

我们使用脚本编辑器加载上述输入数据,该编辑器通过按Control+E调用选择选项表文件并浏览输入文件。

1_cr_load_script

数据加载

创建上述脚本后,我们使用命令Control+R将数据加载到 QlikView 的内存中这是当我们收到错误提示时提到在加载的表中存在循环循环。

2_警告

数据模型

要找到上述警告的确切原因,我们可以使用表格查看器的菜单命令 – Control+T查看数据模型出现以下屏幕,其中清楚地显示了循环引用。这里 RegionCountry 和 SalesRegion 之间的连接可以直接使用Region字段来实现也可以通过首先转到表 ProductCountry,使用字段Country,然后将 ProdcutID 与 Salesregion 映射来实现。

3_cr_data_model

解析循环引用

上述循环引用可以通过重命名数据集中的某些列来解决,这样 QlikView 就不会使用列名自动在表之间形成关联。为此,我们将 RegionCountry 中的 country 列重命名为 SalesCountry。在数据集 ProdcuCountry 中,我们将 Country 列重命名为 ProductCountry。

4_cr_load_script_rectified

修正数据模型

使用命令Control+T可以看到重命名上述列后的 Rectified 数据模型现在我们可以看到表之间的关系没有形成循环。

5_cr_data_model_rectified

Control+R重新加载数据不会再给我们警告,我们可以使用这些数据来创建报告。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁