# 合成钥

在两个或更多数据表共有两个或更多字段时，Qlik Sense 会创建合成钥。这些关键字段是一种匿名字段，表示所有发生的复合关键字段的组合。

如果在加载数据时收到有关合成钥的警告，您应当在数据模型查看器中查看数据结构。您应自己想想数据模型是否正确。有时（大多数时候），由于脚本中的错误，会出现合成钥。

多个合成钥通常是数据模型不正确的症状。但是，如果您具有基于其他合成钥的合成钥，则肯定表明数据模型不正确。

警告注释当合成钥数量增加时（这取决于数据总数，表格结构和其他因素），Qlik Sense 可能会，也可能不会处理，并且最终可能会耗用过量的时间和/或内存。在此情况下，您需要通过删除所有合成钥来重新编写您的脚本。

三个表格与合成钥 $Syn 1 关联。

三个表格与合成钥 $Syn 1 关联。

三个表格与合成钥 $Syn 1 关联。 ![Three tables associated with a synthetic key.](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Resources/Images/ex_gen_SyntheticKeys_dmv.png)

## 处理合成钥

如果需要避免合成钥，有多种方法可在数据加载脚本中解决此问题。

* 确认仅使用逻辑上链接两个表格的字段作为关键字。

  * 诸如“Comment”、“Remark”和“Description”等字段可能存在于多个表格，但不相关，因此不应用作关键字。
  * “Date”、“Company”和“Name”等字段可能位于多个表格中并且具有相同值，但仍具有不同的角色（订单日期/发货日期、客户公司/供应商公司）。在此情况下，不应将它们用作关键字。

* 确保未使用冗余字段，即，确保仅必要的字段进行连接。如果数据被用作密钥，确保不加载多个内部表格的相同日期的 year，month 或 day\_of\_month。

* 如有必要，通常使用 AutoNumber 脚本函数中的字符串 concatenation 自行创建非复合关键字段。

相关学习:

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

## 了解详情

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