# Join

join 前置詞能夠將載入的表格與現有的具名表格或先前最後建立的資料表聯結。

聯結資料的效果是透過其他欄位或屬性集合延伸目標表格，亦即尚未出現在目標表格中的內容。來源資料集和目標表格之間的任何一般欄位名稱用來理解如何關聯新的傳入記錄。這通常稱為「自然聯結」。Qlik 聯結操作會導致產生的目標表格有比一開始更多或更少的記錄，取決於聯結關聯的獨特性和採用的聯結類型。

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

有四種聯結類型：

左聯結

左聯結是最常見的聯結類型。例如，若您有交易資料集並想要組合參考資料集，您通常會使用 `Left Join`。您會先載入交易表格，然後載入參考資料集，同時透過 `Left Join` 前置詞聯結到已載入的交易表格。`Left Join` 會將所有交易保持原狀並新增找到相符項目的補充參考資料欄位。

內聯結

若您有兩個資料集，而您只在乎有相符關聯的任何結果，請考慮使用 `Inner Join`。若找不到相符內容，這將會從載入的來源資料和目標表格排除所有記錄。因此，這可能會讓目標表格的記錄比聯結操作發生之前更少。

外聯結

若您需要保留兩個目標記錄和所有傳入記錄，請使用 `Outer Join`。若找不到相符內容，仍會保留每個記錄集合，而來自聯結另一側的欄位將會保持未填入 (null)。

若省略類型關鍵字，預設聯結類型是外部聯結。

右聯結

此聯結類型保留所有即將載入的記錄，同時將透過聯結設為目標的記錄減少為只有在傳入記錄中有相符關聯的記錄。此為合適的聯結類型，有時候用來將已預先載入的記錄表格裁剪為所需的子集。

來自不同聯結操作類型的結果集合範例

來自不同聯結操作類型的結果集合範例

來自不同聯結操作類型的結果集合範例 ![來自不同聯結操作類型的結果集合範例，在每項操作後呈現資料表格的前後比較。](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-join-examples-operations.png)

資訊備註若在聯結操作的來源和目標之間沒有共同的欄位名稱，聯結將會產生所有列的笛卡兒乘積——這稱為「交叉聯結」。

來自「交叉聯結」操作的結果集合範例

來自「交叉聯結」操作的結果集合範例

來自「交叉聯結」操作的結果集合範例 ![輸入資料與交叉聯結操作後輸出的前後比較 (這可能會涉及任何類型的聯結操作)。](https://help.qlik.com/zh-TW/sense/November2025/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-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm) | 此主題進一步說明「聯結」和「保留」資料集的概念。 |
| [Keep](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm) | `Keep` 載入前置詞類似於 `Join` 前置詞，但這不會合併來源和目標資料集。而是會根據採用的操作類型 (內、外、左或右) 裁剪每個資料集。 |

## 範例 1 - 左聯結：以參考資料集豐富目標表格

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

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 呈現變更記錄的資料集，這載入到名為 `Changes` 的表格中。這包括狀態 ID 索引鍵欄位。

* 呈現變更狀態的第二個資料集，這聯結左側 `Join` 載入前置詞，以載入並合併原始變更記錄。

此左聯結確保變更記錄在新增狀態屬性時保持不變，這會根據共同狀態 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');
```

結果

開啟資料模型檢視器並注意資料模型形狀。僅存在一個去正規化的表格。這合併所有原始變更記錄，並在每個變更記錄上聯結相符的狀態屬性。

產生內部資料模型

| 變更 |
| --- |
| 變更 ID |
| 狀態 ID |
| 已排程開始日期 |
| 已排程結束日期 |
| 商務影響 |
| 狀態 |
| 子狀態 |

若您在資料模型檢視器中展開預覽視窗，您將會看見組織為表格之完整結果集合的一部分：

資料模型檢視器中的變更表格預覽

| 變更 ID | 狀態 ID | 已排程開始日期 | 已排程結束日期 | 商務影響 | 狀態 | 子狀態 |
| --- | --- | --- | --- | --- | --- | --- |
| 10030 | 4 | 19/01/2022 | 23/02/2022 | 無 | 已關閉 | 已取消 |
| 10031 | 3 | 20/01/2022 | 25/03/2022 | 低 | 已關閉 | 已完成 |
| 10015 | 3 | 04/01/2022 | 15/02/2022 | 低 | 已關閉 | 已完成 |
| 10103 | 1 | 02/04/2022 | 29/05/2022 | 中等 | 開啟 | 未開始 |
| 10116 | 1 | 15/04/2022 | 24/04/2022 | 無 | 開啟 | 未開始 |
| 10134 | 1 | 03/05/2022 | 08/07/2022 | 低 | 開啟 | 未開始 |
| 10264 | 1 | 10/09/2022 | 17/10/2022 | 中等 | 開啟 | 未開始 |
| 10040 | 1 | 29/01/2022 | 22/04/2022 | 無 | 開啟 | 未開始 |
| 10323 | 1 | 08/11/2022 | 26/11/2022 | 高 | 開啟 | 未開始 |
| 10187 | 2 | 25/06/2022 | 24/08/2022 | 低 | 開啟 | 已開始 |
| 10185 | 2 | 23/06/2022 | 08/09/2022 | 無 | 開啟 | 已開始 |
| 10220 | 2 | 28/07/2022 | 06/09/2022 | 無 | 開啟 | 已開始 |
| 10326 | 2 | 11/11/2022 | 05/12/2022 | 無 | 開啟 | 已開始 |
| 10138 | 2 | 07/05/2022 | 03/08/2022 | 無 | 開啟 | 已開始 |
| 10334 | 2 | 19/11/2022 | 06/02/2023 | 低 | 開啟 | 已開始 |

由於狀態表格中的第五列 (狀態 ID：「5」，狀態：「已關閉」，子狀態：「已過時」) 沒有對應至變更表格中的任何記錄，此列的資訊不會出現在上述的結果集合中。

返回資料載入編輯器。載入資料並開啟工作表。建立新的表格並將此欄位新增為維度： `Status`。

新增此量值：

`=Count([Change ID])`

現在您可以依狀態檢查變更數量。

結果表格

| 狀態 | =計數([變更 ID]) |
| --- | --- |
| 開啟 | 12 |
| 已關閉 | 3 |

## 範例 2 – 內聯結：僅合併相符記錄

[](https://help.qlik.com/en-US/sense/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` 的結果表格只包含在兩個資料集中具有相符資訊的記錄。

結果表格

| 來源系統 | 變更 ID | 商務影響 |
| --- | --- | --- |
| JIRA | 10030 | 無 |
| JIRA | 10134 | 低 |
| JIRA | 10220 | 無 |
| JIRA | 10323 | 高 |
| JIRA | 10334 | 低 |

## 範例 3 – 外聯結：合併重疊記錄集合

[](https://help.qlik.com/en-US/sense/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 個產生的記錄。

結果表格

| 來源系統 | 變更 ID | 商務影響 |
| --- | --- | --- |
| JIRA | 10030 | 無 |
| JIRA | 10134 | 低 |
| JIRA | 10220 | 無 |
| JIRA | 10323 | - |
| JIRA | 10334 | 低 |
| JIRA | 10597 | - |
| - | 10015 | 低 |
| - | 10031 | 低 |
| - | 10040 | 無 |
| - | 10138 | 無 |

## 範例 4 – 右聯結：按第二主要資料集裁剪目標表格

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

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 呈現變更記錄的資料集，這載入到名為 Changes 的表格中。

* 第二個資料集呈現源自來源系統 Teamwork 的變更記錄。這與 Right Join 載入前置詞聯結，以透過原始記錄載入並合併。

若目標表格沒有相符的 Change ID，這確保僅保留 Teamwork 變更記錄，同時不失去任何 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

現在您可以檢查五個產生的記錄。

結果表格

| 來源系統 | 變更 ID | 商務影響 |
| --- | --- | --- |
| 團隊合作 | 10015 | 低 |
| 團隊合作 | 10031 | 低 |
| 團隊合作 | 10040 | 無 |
| 團隊合作 | 10103 | 中等 |
| 團隊合作 | 50231 | - |

## 瞭解更多資訊

* [Load](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)
* [Select](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)
* [Inner](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Inner.htm)
* [Outer](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Outer.htm)
* [Left](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Left.htm)
* [Right](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Right.htm)
* [Keep](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm)
* [使用 Join 與 Keep 來合併表格](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm)