QlikView - 循环引用
循环引用是指我们可以使用两个或更多不同的路径从一个表遍历到另一个表。这意味着您可以直接使用列将表 1 与表 2 连接起来,也可以先将表 1 与表 3 连接起来,然后再将表 3 与表 2 连接起来。这可能会导致加载这三个表的数据模型形成的输出结果不正确。一旦 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 中,我们将 Country 列重命名为 ProductCountry。
修正后的数据模型
使用命令 Control+T 可以看到重命名上述列后的修正后的数据模型。现在我们可以看到表之间的关系没有形成循环。
按 Control+R 重新加载数据不再会发出警告,我们可以使用此数据创建报告。