📅  最后修改于: 2020-11-29 07:36:59             🧑  作者: Mango
当我们可以使用两个或更多不同的路径从一个表遍历到另一个表时,就会发生循环引用。这意味着您可以直接使用列将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来调用。选择选项“表文件”,然后浏览输入文件。
创建上述脚本后,我们使用Control + R命令将数据加载到QlikView的内存中。这是当我们收到错误提示,提示要加载的表中存在循环循环时。
为了找到上述警告的确切原因,我们可以使用表查看器的菜单命令-Control + T查看数据模型。出现以下屏幕,清楚地显示了循环参考。在这里,可以使用Region区域直接实现RegionCountry和SalesRegion之间的连接。也可以通过首先转到表ProductCountry,使用字段Country ,然后将ProdcutID与Salesregion映射来实现。
可以通过重命名数据集中的某些列来解决上述循环引用,以使QlikView不会使用列名自动在表之间形成关联。为此,我们将RegionCountry中的country列重命名为SalesCountry。在数据集ProdcuCountry中,我们将“国家/地区”列重命名为ProductCountry。
使用命令Control + T可以看到重命名上一列后的Rectified数据模型。现在我们可以看到表之间的关系没有形成循环。
按Control + R重新加载数据不会再向我们发出警告,我们可以使用此数据来创建报告。