# Join

join 前缀可连接加载的表格和现有已命名的表格或最近创建的数据表。

连接数据的效果是通过一组额外的字段或属性（即目标表中尚未存在的字段或属性）来扩展目标表。源数据集和目标表之间任何常见的字段名称都用于计算如何关联新传入的记录。这通常被称为“自然连接”。根据连接关联的唯一性和所采用的连接类型，Qlik 连接操作可能导致生成的目标表具有比开始时更多或更少的记录。

[Join script prefix](https://play.vidyard.com/7xrdzssVH99Jsr8gmPunCC)

## 连接类型

有四种类型的连接：

* 左连接

* 内连接

* 外连接

* 右连接

不同类型连接操作的示例结果集

不同类型连接操作的示例结果集

不同类型连接操作的示例结果集 ![不同类型连接操作的示例结果集，包含每次操作后数据表的对比表示。输入由一个目标表和一个传入数据集组成。目标表有两列，包含“Trade ID”和“Asset Class”字段的两行条目。传入数据有两列，包含“Trade ID”和“Exchange”字段的两行条目。左连接保留初始目标表并添加第三列，除了添加其中一个“Exchange”行条目外，其余全部为空。内连接创建一个包含一个 Trade ID 行和第三列的表，同样用于“Exchange”行条目。外连接保留目标表并添加第三列，以及将传入数据集的第二行附加到的第三行。右连接删除目标表的第二行条目，并将其替换为传入数据集第二行条目的信息，在此过程中添加第三列。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-join-examples-operations.png)

### 左连接

左连接是最常见的连接类型。例如，如果您有一个事务数据集并希望将其与参考数据集结合，您通常会使用 `Left Join`。您将首先加载事务表，然后加载参考数据集，同时通过 `Left Join` 前缀将其连接到已加载的事务表上。`Left Join` 将按原样保留所有事务，并在找到匹配项时添加补充的参考数据字段。

左连接

左连接

左连接 ![从高层次概述左连接期间发生的数据组合的图表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_left.png)

### 内连接

当您有两个数据集，并且只关心存在匹配关联的任何结果时，请考虑使用 `Inner Join`。如果未找到匹配项，这将从加载的源数据和目标表中消除所有记录。因此，这可能会使您的目标表中的记录少于连接操作发生之前的记录。

内连接

内连接

内连接 ![从高层次概述内连接期间发生的数据组合的图表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_inner.png)

### 外连接（默认）

当您需要保留目标记录和所有传入记录时，请使用 `Outer Join`。在未找到匹配项的情况下，每组记录仍会保留，而连接另一侧的字段将保持未填充状态（空值）。

如果省略了类型关键字，则默认连接类型为外连接。

外连接

外连接

外连接 ![从高层次概述外连接期间发生的数据组合的图表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_outer.png)

### 右连接

此连接类型保留即将加载的所有记录，同时将连接目标表中的记录减少为仅在传入记录中存在关联匹配的记录。这是一种小众的连接类型，有时用作将已预加载的记录表缩减为所需子集的一种方法。

右连接

右连接

右连接 ![从高层次概述右连接期间发生的数据组合的图表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_right.png)

### 交叉连接

信息注释如果连接操作的源和目标之间没有共同的字段名称，则连接将导致所有行的笛卡尔积——这被称为“交叉连接”。

“交叉连接”操作的示例结果集

“交叉连接”操作的示例结果集

“交叉连接”操作的示例结果集 ![交叉连接操作（可能涉及任何类型的连接操作）后输入数据与输出的对比。输入是一个目标表和一个传入数据集。目标表由三列组成，包含两行条目。列为“Trade ID”、“Base Currency”和“Amount”。传入数据集有两列（“Trade Currency”和“Rate”）和两行条目。结果表有五列，分别是“Trade ID”、“Base Currency”、“Amount”、“Target Currency”和“Rate”。有四行条目，组合了所有数据。每个“Trade ID”条目有两行，在其他字段中具有不同的数据。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-examples-join-no-common-fields.png)

## 语法和参数

[inner | outer | left | right ]Join [ (tablename ) ]( loadstatement | selectstatement )

参数

| 参数 | 说明 |
| --- | --- |
| tablename | 可以将命名的表格与加载的表格进行比较。 |
| loadstatement或 selectstatement | LOAD 或 SELECT 语句适用于加载的表格。 |

## 相关主题

这些主题可能有助于您使用此函数：

相关主题

| 主题 | 描述 |
| --- | --- |
| [使用 Join 和 Keep 合并表](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm) | 本主题进一步解释了“连接”和“保留”数据集的概念。 |
| [Keep](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm) | `Keep` 加载前缀类似于 `Join` 前缀，但它不组合源数据集和目标数据集。相反，它根据采用的操作类型（内、外、左或右）修剪每个数据集。 |

## 加载脚本示例 - 左连接

左连接保留主（目标）表中的所有记录，并添加来自第二个（源）表的匹配数据。如果源中没有匹配项，主表的记录仍然会出现，但源表中的字段为空。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 左连接：基本示例

将示例脚本添加到您的应用程序并运行它。要查看结果，请将结果列中列出的字段添加到应用程序中的工作表。

加载脚本

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Left Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ]; 
```

有关使用内联加载的更多信息，请参阅 [使用内联加载来加载数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)。

结果

结果表

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |
| 2 | cc | - |
| 3 | ee | - |

此示例演示了 Left Join 输出，其中仅连接第一个（左）表中存在的值。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 左连接示例：使用客户信息丰富订单

概述

假设您有一个订单列表，但并非所有订单都有匹配的客户记录。

加载脚本

```
Orders:
Load * inline [
OrderID, CustomerID, Amount
1, 101, 200
2, 102, 150
3, 104, 400
];

Customers:
Left Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
```

结果

如果在数据模型查看器中展开预览窗口，您将看到组织成表的部分完整结果集：

数据模型查看器中的表预览

| OrderID | CustomerID | Amount | Name |
| --- | --- | --- | --- |
| 1 | 101 | 200 | Alice |
| 2 | 102 | 150 | Bob |
| 3 | 104 | 400 | - |

OrderID 1 和 2 有匹配的客户。 OrderID 3 没有匹配的客户，因此 Name 为空。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 左连接示例：使用参考数据集丰富目标表

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 表示更改记录的数据集，该数据集加载到名为 `Changes` 的表中。它包含一个 Status ID 关键字段。

* 表示更改状态的第二个数据集，通过使用左 `Join` 加载前缀将其与原始更改记录连接来加载和组合。

此左连接确保更改记录保持完整，同时在基于共同的 Status ID 在传入状态记录中找到匹配项时添加状态属性。

加载脚本

```
Changes:
Load * inline [ 
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact 
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10103	1	02/04/2022	29/05/2022	Medium
10185	2	23/06/2022	08/09/2022	None
10323	1	08/11/2022	26/11/2022	High
10326	2	11/11/2022	05/12/2022	None
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
10264	1	10/09/2022	17/10/2022	Medium
10116	1	15/04/2022	24/04/2022	None
10187	2	25/06/2022	24/08/2022	Low
] (delimiter is '\t');

Status:
Left Join (Changes)
Load * inline [
Status ID	Status	Sub Status
1	Open	Not Started
2	Open	Started
3	Closed	Completed
4	Closed	Cancelled
5	Closed	Obsolete			
] (delimiter is '\t');
```

结果

打开数据模型查看器并注意数据模型的形状。仅存在一个非规范化表。它是所有原始更改记录的组合，匹配的状态属性连接到每个更改记录上。

生成的内部数据模型

| Changes |
| --- |
| Change ID |
| Status ID |
| Scheduled Start Date |
| Scheduled End Date |
| Business Impact |
| Status |
| Sub Status |

如果在数据模型查看器中展开预览窗口，您将看到组织成表的此完整结果集的一部分：

数据模型查看器中的 Changes 表预览

| Change ID | Status ID | Scheduled Start Date | Scheduled End Date | Business Impact | Status | Sub Status |
| --- | --- | --- | --- | --- | --- | --- |
| 10030 | 4 | 19/01/2022 | 23/02/2022 | None | Closed | Cancelled |
| 10031 | 3 | 20/01/2022 | 25/03/2022 | Low | Closed | Completed |
| 10015 | 3 | 04/01/2022 | 15/02/2022 | Low | Closed | Completed |
| 10103 | 1 | 02/04/2022 | 29/05/2022 | Medium | Open | Not Started |
| 10116 | 1 | 15/04/2022 | 24/04/2022 | None | Open | Not Started |
| 10134 | 1 | 03/05/2022 | 08/07/2022 | Low | Open | Not Started |
| 10264 | 1 | 10/09/2022 | 17/10/2022 | Medium | Open | Not Started |
| 10040 | 1 | 29/01/2022 | 22/04/2022 | None | Open | Not Started |
| 10323 | 1 | 08/11/2022 | 26/11/2022 | High | Open | Not Started |
| 10187 | 2 | 25/06/2022 | 24/08/2022 | Low | Open | Started |
| 10185 | 2 | 23/06/2022 | 08/09/2022 | None | Open | Started |
| 10220 | 2 | 28/07/2022 | 06/09/2022 | None | Open | Started |
| 10326 | 2 | 11/11/2022 | 05/12/2022 | None | Open | Started |
| 10138 | 2 | 07/05/2022 | 03/08/2022 | None | Open | Started |
| 10334 | 2 | 19/11/2022 | 06/02/2023 | Low | Open | Started |

由于 Status 表中的第五行（Status ID：'5'，Status：'Closed'，Sub Status：'Obsolete'）不对应于 Changes 表中的任何记录，因此该行中的信息不会出现在上述结果集中。

返回到数据加载编辑器。加载数据并打开工作表。创建新表并将该字段添加为维度： `Status`。

添加此度量：

`=Count([Change ID])`

现在您可以按 Status 检查 Changes 的数量。

结果表

| Status | =Count([Change ID]) |
| --- | --- |
| Open | 12 |
| Closed | 3 |

## 加载脚本示例 - 内连接

内连接仅保留两个表中都存在的记录（基于匹配的字段值）。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 内连接：基本示例

加载脚本

将示例脚本添加到您的应用程序并运行它。要查看结果，请将结果列中列出的字段添加到应用程序中的工作表。

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Inner Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
```

有关使用内联加载的更多信息，请参阅 [使用内联加载来加载数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)。

结果

结果表

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |

此示例演示了 Inner Join 输出，其中仅连接第一个（左）表和第二个（右）表中都存在的值。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 内连接示例：将订单减少为仅已发货

概述

您有订单和已发货订单的列表。您只想要已发货的订单。

加载脚本

```
Orders:
Load * inline [
OrderID, Amount
1, 200
2, 150
3, 400
];

Shipped:
Inner Join (Orders)
Load * inline [
OrderID, ShipDate
2, 2022-05-01
3, 2022-05-02
4, 2022-05-03
];
```

结果

如果在数据模型查看器中展开预览窗口，您将看到组织成表的部分完整结果集：

数据模型查看器中的表预览

| OrderID | Amount | ShipDate |
| --- | --- | --- |
| 2 | 150 | 2022-05-01 |
| 3 | 400 | 2022-05-02 |

仅出现 OrderID 2 和 3，因为它们在两个表中都存在。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 内连接示例：仅组合匹配的记录

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 表示更改记录的数据集，该数据集加载到名为 Changes 的表中。

* 表示源自源系统 JIRA 的更改记录的第二个数据集。通过使用 Inner Join 加载前缀将其与原始记录连接来加载和组合。

此 Inner Join 确保仅保留在两个数据集中都找到的五个更改记录。

加载脚本

```
Changes:
Load * inline [
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10103	1	02/04/2022	29/05/2022	Medium
10185	2	23/06/2022	08/09/2022	None
10323	1	08/11/2022	26/11/2022	High
10326	2	11/11/2022	05/12/2022	None
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
10264	1	10/09/2022	17/10/2022	Medium
10116	1	15/04/2022	24/04/2022	None
10187	2	25/06/2022	24/08/2022	Low
] (delimiter is '\t');

JIRA_changes:
Inner Join (Changes)
Load
  [Ticket ID] AS [Change ID],
  [Source System]
inline
[
Ticket ID	Source System
10000	JIRA					
10030	JIRA
10323	JIRA
10134	JIRA
10334	JIRA
10220	JIRA
20000	TFS
] (delimiter is '\t');
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* Source System

* Change ID

* Business Impact

现在您可以检查生成的五个记录。Inner Join 生成的表将仅包含在两个数据集中具有匹配信息的记录。

结果表

| Source System | Change ID | Business Impact |
| --- | --- | --- |
| JIRA | 10030 | None |
| JIRA | 10134 | Low |
| JIRA | 10220 | None |
| JIRA | 10323 | High |
| JIRA | 10334 | Low |

## 加载脚本示例 - 外连接

外连接保留两个表中的所有记录。在没有匹配项的地方，字段留空。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 外连接：基本示例

加载脚本

将示例脚本添加到您的应用程序并运行它。要查看结果，请将结果列中列出的字段添加到应用程序中的工作表。

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Outer Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ]; 
```

有关使用内联加载的更多信息，请参阅 [使用内联加载来加载数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)。

结果

结果表

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |
| 2 | cc | - |
| 3 | ee | - |
| 4 | - | yy |

在此示例中，两个表 Table1 和 Table2 合并为一个标记为 Table1 的表。在类似这样的情况下，通常使用 outer 前缀将多个表连接成一个表，以便对单个表的值执行聚合。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 外连接：创建所有客户和订单的完整列表

概述

您想要所有客户和订单的完整列表，即使某些客户没有订单，某些订单没有客户记录。

加载脚本

```
Orders:
Load * inline [
OrderID, CustomerID
1, 101
2, 102
3, 104
];

Customers:
Outer Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
```

结果

如果在数据模型查看器中展开预览窗口，您将看到组织成表的此完整结果集的一部分：

数据模型查看器中的表预览

| OrderID | CustomerID | Name |
| --- | --- | --- |
| 1 | 101 | Alice |
| 2 | 102 | Bob |
| 3 | 104 | - |
| - | 103 | Carol |

OrderID 3 没有匹配的客户（Name 为空）。

CustomerID 103（Carol）没有匹配的订单（OrderID 为空）。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 外连接：组合重叠的记录集

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 表示更改记录的数据集，该数据集加载到名为 Changes 的表中。

* 表示源自源系统 JIRA 的更改记录的第二个数据集，通过使用 Outer Join 加载前缀将其与原始记录连接来加载和组合。

这确保保留两个数据集中所有重叠的更改记录。

加载脚本

```
// 8 Change records

Changes:
Load * inline [
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
] (delimiter is '\t');

// 6 Change records

JIRA_changes:
Outer Join (Changes)
Load
  [Ticket ID] AS [Change ID],
  [Source System]
inline
[
Ticket ID	Source System
10030	JIRA
10323	JIRA
10134	JIRA
10334	JIRA
10220	JIRA
10597	JIRA
] (delimiter is '\t');
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* Source System

* Change ID

* Business Impact

现在您可以检查 10 个生成的记录。

结果表

| Source System | Change ID | Business Impact |
| --- | --- | --- |
| JIRA | 10030 | None |
| JIRA | 10134 | Low |
| JIRA | 10220 | None |
| JIRA | 10323 | - |
| JIRA | 10334 | Low |
| JIRA | 10597 | - |
| - | 10015 | Low |
| - | 10031 | Low |
| - | 10040 | None |
| - | 10138 | None |

## 加载脚本示例 - 右连接

右连接保留源表中的所有记录，并添加来自目标表的匹配信息。如果目标表没有匹配项，则其字段为空。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 右连接：基本示例

加载脚本

将示例脚本添加到您的应用程序并运行它。要查看结果，请将结果列中列出的字段添加到应用程序中的工作表。

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Right Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
```

有关使用内联加载的更多信息，请参阅 [使用内联加载来加载数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)。

结果

结果表

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |
| 4 | - | yy |

此示例演示了 Right Join 输出，其中仅连接第二个（右）表中存在的值。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 右连接示例：将所有客户与匹配的订单组合

概述

您的源表是客户列表；您想要所有客户，加上任何匹配的订单。

加载脚本

```
Orders:
Load * inline [
OrderID, CustomerID
1, 101
2, 102
3, 104
];

Customers:
Right Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
```

结果

如果在数据模型查看器中展开预览窗口，您将看到组织成表的此完整结果集的一部分：

数据模型查看器中的表预览

| CustomerID | Name | OrderID |
| --- | --- | --- |
| 101 | Alice | 1 |
| 102 | Bob | 2 |
| 103 | Carol | - |

所有客户都会出现。Carol 没有订单（OrderID 为空）。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 右连接示例：通过辅助主数据集修剪目标表

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 表示更改记录的数据集，该数据集加载到名为 Changes 的表中。

* 表示源自源系统 Teamwork 的更改记录的第二个数据集。通过使用 Right Join 加载前缀将其与原始记录连接来加载和组合。

这确保仅保留 Teamwork 更改记录，同时如果目标表没有匹配的 Change ID，也不会丢失任何 Teamwork 记录。

加载脚本

```
Changes:

Load * inline [
Change ID	Status ID	Scheduled Start Date	Scheduled End Date	Business Impact
10030	4	19/01/2022	23/02/2022	None
10015	3	04/01/2022	15/02/2022	Low
10103	1	02/04/2022	29/05/2022	Medium
10185	2	23/06/2022	08/09/2022	None
10323	1	08/11/2022	26/11/2022	High
10326	2	11/11/2022	05/12/2022	None
10138	2	07/05/2022	03/08/2022	None
10031	3	20/01/2022	25/03/2022	Low
10040	1	29/01/2022	22/04/2022	None
10134	1	03/05/2022	08/07/2022	Low
10334	2	19/11/2022	06/02/2023	Low
10220	2	28/07/2022	06/09/2022	None
10264	1	10/09/2022	17/10/2022	Medium
10116	1	15/04/2022	24/04/2022	None
10187	2	25/06/2022	24/08/2022	Low
] (delimiter is '\t');

Teamwork_changes:
Right Join (Changes)
Load
  [Ticket ID] AS [Change ID],
  [Source System]
inline
[
Ticket ID	Source System
10040	Teamwork
10015	Teamwork
10103	Teamwork
10031	Teamwork
50231	Teamwork
] (delimiter is '\t');
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* Source System

* Change ID

* Business Impact

现在您可以检查生成的五个记录。

结果表

| Source System | Change ID | Business Impact |
| --- | --- | --- |
| Teamwork | 10015 | Low |
| Teamwork | 10031 | Low |
| Teamwork | 10040 | None |
| Teamwork | 10103 | Medium |
| Teamwork | 50231 | - |

## 故障排除 - 交叉连接

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### 故障排除加载脚本示例：没有共同的字段名称

概述

如果您连接两个没有匹配字段名称的表，第一个表中的每一行都将与第二个表中的每一行组合——这可能会产生大量记录（笛卡尔积）并导致意外的数据关联。

加载脚本

```
TableA:
Load * inline [
A_ID, ValueA
1, foo
2, bar
];

TableB:
Join (TableA)
Load * inline [
B_ID, ValueB
10, baz
11, qux
];
```

结果

如果在数据模型查看器中展开预览窗口，您将看到组织成表的此完整结果集的一部分：

数据模型查看器中的表预览

| A\_ID | ValueA | B\_ID | ValueB |
| --- | --- | --- | --- |
| 1 | foo | 10 | baz |
| 1 | foo | 11 | qux |
| 2 | bar | 10 | baz |
| 2 | bar | 11 | qux |

每个 A\_ID 都与每个 B\_ID 配对（共 4 行）。

提示注释在运行连接之前，请务必检查您的字段名称是否按预期匹配。

[Load](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)

[Select](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)

[Inner](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Inner.htm)

[Outer](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Outer.htm)

[Left](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Left.htm)

[Right](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Right.htm)

[Keep](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm)

[使用 Join 和 Keep 合并表](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm)