---
schema_version: "1"
id: 57c6063fd83faaeadf07a6ed15a23d58c1642f451f411a47489c27ecb8a34458
title: 联接疑难解答
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/pro/desktop/joins_troubleshoot.md
canonical_url: https://help.tableau.com/v0.0/pro/desktop/zh-cn/joins_troubleshoot.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 975be955ba592533c358eaeb595c21cfa71638042fc4ece48a7e45afc87f0f76
description: Troubleshoot join issues like over-counting, duplicated data, and broken joins.
---
[跳转到主要内容](#main-content)

# 联接疑难解答

**注意**：如果您的联接是错误计数的数据，它可能是一个符号，您应改用关系。有关关系的详细信息，请参见[关联您的数据](https://help.tableau.com/v0.0/pro/desktop/zh-cn/relate_tables.htm)。有关 Tableau 如何处理来自不同详细级别（例如多对多关系）的数据组合的信息，请参见[关联基数和引用完整性](https://help.tableau.com/current/pro/desktop/zh-cn/cardinality_and_ri.htm)。

## 过度计数的值或重复数据

连接到多个表并将这些表联接在一起时，将会建立一个_非标准化_数据版本。在某些情况下，Tableau 将多个表视为一个表。如果多个表被视为一个表，则在联接表之后将会查询_所有_表。这些值导致值被过度计数。

例如，假设您有两个表。第一个表包含员工信息，例如员工 ID 和工资。第二个表包含组织信息，例如部门名称。

<table><colgroup></colgroup><tbody><tr><td><p><b>表 1</b></p><table class="table--plain"><tbody><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Employee ID</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">名称</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1" style="font-weight: bold;">Salary</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">20106</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Kim, Michelle</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">63,000</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">20107</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Wilson, Henry</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">61,000</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">20108</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">Smith, John</td><td class="TableStyle-Basic-Border-BodyA-Column1-Body1">65,000</td></tr></tbody></table></td><td><p><b>表 2</b></p><table class="table--plain"><tbody><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Department</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Hire Date</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Employee ID</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1" style="font-weight: bold;">Organization</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Development</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">6/16/2016</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">20289</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">Strategy</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Support</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">7/28/2015</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">20107</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">Operations</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Support</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">8/05/2016</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">20299</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">Operations</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">销售额</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">8/25/2016</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">20107</td><td class="TableStyle-Basic-Border-BodyA-Column1-Body1">Operations</td></tr></tbody></table></td></tr></tbody></table>

如果针对**“Employee ID”（员工 ID）**联接这些表，则某个员工的工资将计数多次，因为该员工与多个部门关联。

<table class="table--plain"><tbody><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Employee ID</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">名称</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Salary</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Department</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1" style="font-weight: bold;">Hire Date</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1" style="font-weight: bold;">Organization</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">20107</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Wilson, Henry</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">61,000</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Support</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">7/28/2015</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">Operations</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">20107</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">Wilson, Henry</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">61,000</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">销售额</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">8/25/2016</td><td class="TableStyle-Basic-Border-BodyA-Column1-Body1">Operations</td></tr></tbody></table>

这是一对多关联基数的示例（表 1 中的一个员工 ID 在表 2 中具有多个结果）。有关表之间的关联基数的详细信息，请参见[使用性能选项优化关系查询](https://help.tableau.com/v0.0/pro/desktop/zh-cn/datasource_relationships_perfoptions.htm)。

为了帮助解决此问题，您可以执行以下操作之一：

- 关联**数据：**您可以使用关系，而不是创建可能会使数据重复的联接。有关详细信息，请参见[关联您的数据](https://help.tableau.com/v0.0/pro/desktop/zh-cn/relate_tables.htm)。
    
    **更改聚合：** 您可以根据您的分析使用 MIN 或 **AVG** 聚合来移除重复计数。
    
    例如，如果将**“Salary”（工资）**的聚合从 SUM 更改为 MIN 或从 SUM 更改为 AVG。
- **创建用于移除重复值的计算字段：**您可以创建一个计算，将要复制的字段的总和除以导致重复的字段实例数。
    
    例如，系统按 Wilson, Henry 的“Employee ID”（员工 ID）的实例数复制了“Salary”（工资）值。在此情况下，请将视图中的“Salary”（工资）替换为使用以下公式的计算字段：`SUM ([Salary])/ COUNT ([Employee ID])`。
    
    您也可以使用详细级别表达式来删除重复数据。有关详细信息，请参见 Tableau 知识库中的[使用 LOD 计算移除重复数据](http://kb.tableau.com/articles/howto/removing-duplicate-data-with-lod-calculations?lang=zh-cn)。
- **使用自定义 SQL：** Tableau 支持使用自定义 SQL 连接到一个数据源的多个表。在使用 GROUP BY 子句联接表之前，可以预先聚合这些表。此选项需要一些有关编写 SQL 查询的知识以及数据库专家的帮助（如果可能）。有关如何从 Tableau 连接到自定义 SQL 查询的详细信息，请参见[连接到自定义 SQL 查询](https://help.tableau.com/v0.0/pro/desktop/zh-cn/customsql.htm)。

## 表联接和跨数据库联接断开

在（从同一数据源中或使用跨数据库联接）联接表之前，请确保联接键的数据类型匹配。如果联接键的数据类型不匹配，则联接将断开，由红色的感叹号和错误文本“联接字段之间的类型不匹配”指明。若要修复断开的联接，请遵循以下建议之一：

- 您可以在联接对话框中更改字段（包括其数据类型）的格式，以通过创建联接计算使连接键匹配。联接计算支持计算子集，以允许您修改要合并的一个或多个表中的联接键格式。若要创建联接计算，请单击具有断开联接的表之间的联接图标，再单击其格式需要修改的字段，然后选择“创建联接计算”。有关详细信息，请参见[联接疑难解答](#joinoncalcs)。
- 对于文本或基于 Excel 的数据，请使用数据网格中的数据类型菜单修改联接键中文本或 Excel 字段其中之一的数据类型。
- **仅限 Tableau Desktop**：对于大多数连接，您可以使用 CAST () 之类的函数以及“转换为自定义 SQL”选项更改联接键中其中一个字段的数据类型。只有当数据源仅包含连接时，“转换为自定义 SQL”选项才可用。在这种情况下，请移除第二个连接，然后选择“数据”\>“转换为自定义 SQL”。