# 了解并解决循环引用

如果数据结构中存在循环引用（“循环”），则两个表格在关联时存在不止一条关联路径。

应尽可能避免此类数据结构，因为这可能会导致数据解释模糊不清。

带循环引用的三个表，因为在两个字段之间有一个以上的路径。

带循环引用的三个表，因为在两个字段之间有一个以上的路径。

带循环引用的三个表，因为在两个字段之间有一个以上的路径。 ![带循环引用的三个表格。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ex_gen_CircularTables.png)

Qlik Sense 通过松散耦合表来打破循环，解决循环引用的问题。如果 Qlik Sense 在执行加载脚本时发现循环数据结构，将会显示一个警告对话框，并设置一个或多个表格为松散耦合。Qlik Sense 通常会尝试设置循环中的最长表格成为松散耦合表，因为它往往是交易表格，通常也是应该作松散处理的表格。在数据模型查看器中，松散耦合表通过连接到其他表格的红色虚线表示。

示例：

从三个图表中加载的数据包括以下：

* 一些国家足球队的名字
* 一些城市的足球俱乐部
* 一些欧洲国家的城市

Excel 格式的源数据表格的视图

Excel 格式的源数据表格的视图

Excel 格式的源数据表格的视图 ![Excel 格式的表格。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ex_gen_CircularRefData.png)

此数据结构并不是很好，因为字段名 Team 有两个不同的使用目的：国家队名和地方俱乐部名。不可能的逻辑情况因表格中的数据而呈现于前。

当加载表格到 Qlik Sense 时，Qlik Sense 确定不重要的数据连接，然后松散处理表格。

选择数据模型查看器可查看 Qlik Sense 解释数据连接关系的方式：

循环引用的视图用红色虚线表示。

循环引用的视图用红色虚线表示。

循环引用的视图用红色虚线表示。 ![Circular references between tables.](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ex_gen_Circular.png)

城市与及它们所属的国家现在处理成不同国家的国家队和不同城市的当地俱乐部的松散耦合表。

## 解决循环引用

一旦循环引用出现，您需要通过分配一个唯一的相同名称命名字段来编辑数据加载脚本。

执行以下操作：

1. 打开数据加载编辑器。

2. 为其中一个重复字段名称编辑 LOAD 语句。

   在此例中，拥有当地球队及其城市的 LOAD 语句将会为 Team 编辑新名称，例如 LocalClub。更新的 LOAD 语句读作：

   `LOAD City, Team as LocalClub`

1) 单击工具栏中的 the 播放 icon 以在应用程序中重新加载数据。

您现在已经有处理所有表格的逻辑了。在此例中，在选择Germany后，国家队名，德国城市名和每个城市的当地俱乐部名与之相关：

![Sheet with four tables.](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ex_gen_CircularSolved.png)

打开数据模型查看器后，可以看到常规联系已替换松散耦合联系：

![Three tables with regular connections in the Data model viewer.](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ex_gen_CircularSolved_dmv.png)

相关学习内容：

* [数据模型查看器简介](https://help.qlik.com/lnk/Intro_Data_Model_Viewer_QS)

## 了解详情

* [数据模型查看器简介](https://help.qlik.com/lnk/Intro_Data_Model_Viewer_QS)