# Join

join 접두사는 로드한 테이블을 기존의 명명된 테이블이나 마지막으로 생성한 데이터 테이블과 조인합니다.

데이터 조인의 효과는 대상 테이블에 아직 없는 추가 필드 또는 속성 집합으로 대상 테이블을 확장하는 것입니다. 소스 데이터 집합과 대상 테이블 간의 공통 필드 이름은 새로 들어오는 레코드를 연결하는 방법을 알아내는 데 사용됩니다. 이를 일반적으로 "자연 조인(natural join)"이라고 합니다. Qlik 조인 작업은 조인 연결의 고유성과 사용된 조인 유형에 따라 결과 대상 테이블의 레코드 수가 시작할 때보다 많거나 적어질 수 있습니다.

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

## 조인 유형

조인에는 네 가지 유형이 있습니다.

* Left join

* Inner join

* Outer join

* Right join

다양한 유형의 조인 작업의 예시 결과 집합

다양한 유형의 조인 작업의 예시 결과 집합

다양한 유형의 조인 작업의 예시 결과 집합 ![각 작업 후 데이터 테이블의 전후 표현이 포함된 다양한 유형의 조인 작업의 예시 결과 집합입니다. 입력은 대상 테이블과 들어오는 데이터 집합으로 구성됩니다. 대상 테이블에는 'Trade ID' 및 'Asset Class' 필드에 대한 두 개의 행 항목이 있는 두 개의 열이 있습니다. 들어오는 데이터에는 'Trade ID' 및 'Exchange' 필드에 대한 두 개의 행 항목이 있는 두 개의 열이 있습니다. Left Join은 초기 대상 테이블을 유지하고 'Exchange' 행 항목 중 하나를 추가하는 것을 제외하고 모두 비어 있는 세 번째 열을 추가합니다. Inner Join은 하나의 Trade ID 행과 'Exchange' 행 항목에 대한 세 번째 열이 있는 테이블을 만듭니다. Outer Join은 대상 테이블을 유지하고 들어오는 데이터 집합의 두 번째 행이 추가되는 세 번째 행을 따라 세 번째 열을 추가합니다. Right Join은 대상 테이블의 두 번째 행 항목을 제거하고 들어오는 데이터 집합의 두 번째 행 항목의 정보로 바꾸어 그 과정에서 세 번째 열을 추가합니다.](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-join-examples-operations.png)

### Left join

Left join은 가장 일반적인 조인 유형입니다. 예를 들어 트랜잭션 데이터 집합이 있고 이를 참조 데이터 집합과 결합하려는 경우 일반적으로 `Left Join`을 사용합니다. 트랜잭션 테이블을 먼저 로드한 다음 이미 로드된 트랜잭션 테이블에 `Left Join` 접두사를 통해 조인하면서 참조 데이터 집합을 로드합니다. `Left Join`은 모든 트랜잭션을 그대로 유지하고 일치하는 항목이 있는 보충 참조 데이터 필드를 추가합니다.

Left join

Left join

Left join ![Left join 중에 발생하는 데이터 조합을 높은 수준에서 요약한 다이어그램입니다.](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Resources/Images/join-types-scripting_left.png)

### Inner join

일치하는 연결이 있는 결과에만 관심이 있는 두 개의 데이터 집합이 있는 경우 `Inner Join`을 사용하는 것이 좋습니다. 이렇게 하면 일치하는 항목이 없는 경우 로드된 소스 데이터와 대상 테이블 모두에서 모든 레코드가 제거됩니다. 결과적으로 조인 작업이 수행되기 전보다 대상 테이블에 더 적은 레코드가 남을 수 있습니다.

Inner join

Inner join

Inner join ![Inner join 중에 발생하는 데이터 조합을 높은 수준에서 요약한 다이어그램입니다.](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Resources/Images/join-types-scripting_inner.png)

### Outer join(기본값)

대상 레코드와 들어오는 모든 레코드를 모두 유지해야 하는 경우 `Outer Join`을 사용합니다. 일치하는 항목이 없는 경우 각 레코드 집합은 계속 유지되지만 조인의 반대쪽 필드는 채워지지 않은 상태(null)로 유지됩니다.

유형 키워드를 생략하면 기본 조인 유형은 Outer join입니다.

Outer join

Outer join

Outer join ![Outer join 중에 발생하는 데이터 조합을 높은 수준에서 요약한 다이어그램입니다.](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Resources/Images/join-types-scripting_outer.png)

### Right join

이 조인 유형은 로드하려는 모든 레코드를 유지하면서 조인의 대상이 되는 테이블의 레코드를 들어오는 레코드에 연결 일치가 있는 레코드로만 줄입니다. 이것은 이미 미리 로드된 레코드 테이블을 필요한 하위 집합으로 줄이는 수단으로 때때로 사용되는 틈새 조인 유형입니다.

Right join

Right join

Right join ![Right join 중에 발생하는 데이터 조합을 높은 수준에서 요약한 다이어그램입니다.](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Resources/Images/join-types-scripting_right.png)

### Cross join

정보 메모조인 작업의 소스와 대상 간에 공통된 필드 이름이 없는 경우 조인은 모든 행의 데카르트 곱(cartesian product)을 생성합니다. 이를 "크로스 조인(cross join)"이라고 합니다.

"크로스 조인" 작업의 예시 결과 집합

"크로스 조인" 작업의 예시 결과 집합

"크로스 조인" 작업의 예시 결과 집합 ![크로스 조인 작업(모든 유형의 조인 작업을 포함할 수 있음) 후의 입력 데이터와 출력의 전후 비교입니다. 입력은 대상 테이블과 들어오는 데이터 집합입니다. 대상 테이블은 두 개의 행 항목이 있는 세 개의 열로 구성됩니다. 열은 'Trade ID', 'Base Currency' 및 'Amount'입니다. 들어오는 데이터 집합에는 두 개의 열('Trade Currency' 및 'Rate')과 두 개의 행 항목이 있습니다. 결과 테이블에는 'Trade ID', 'Base Currency', 'Amount', 'Target Currency' 및 'Rate'의 다섯 개 열이 있습니다. 모든 데이터를 결합하는 네 개의 행 항목이 있습니다. 각 'Trade ID' 항목에는 다른 필드에 다른 데이터가 있는 두 개의 행이 있습니다.](https://help.qlik.com/ko-KR/sense/May2026/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/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm) | 이 주제에서는 데이터 집합을 "조인(joining)"하고 "유지(keeping)"하는 개념에 대해 자세히 설명합니다. |
| [Keep](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm) | `Keep` 로드 접두사는 `Join` 접두사와 유사하지만 소스 및 대상 데이터 집합을 결합하지 않습니다. 대신 채택된 작업 유형(inner, outer, left 또는 right)에 따라 각 데이터 집합을 자릅니다. |

## 로드 스크립트 예 - Left join

Left join은 기본(대상) 테이블의 모든 레코드를 유지하고 두 번째(소스) 테이블에서 일치하는 데이터를 추가합니다. 소스에 일치하는 항목이 없으면 기본 테이블의 레코드가 계속 표시되지만 소스 테이블의 필드는 비어 있습니다.

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

#### Left join: 기본 예

예제 스크립트를 응용 프로그램에 추가하고 실행합니다. 결과를 보려면 결과 열에 나열된 필드를 응용 프로그램의 시트에 추가합니다.

로드 스크립트

```
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/ko-KR/sense/May2026/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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Left join 예: 고객 정보로 주문 보강

개요

주문 목록이 있지만 모든 주문에 일치하는 고객 레코드가 있는 것은 아니라고 가정해 보겠습니다.

로드 스크립트

```
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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Left join 예: 참조 데이터 집합으로 대상 테이블 보강

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* 변경 레코드를 나타내는 데이터 집합으로, `Changes`라는 테이블에 로드됩니다. 여기에는 Status ID 키 필드가 포함됩니다.

* 변경 상태를 나타내는 두 번째 데이터 집합으로, 왼쪽 `Join` 로드 접두사와 조인하여 로드되고 원래 변경 레코드와 결합됩니다.

이 Left 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 | =Count([Change ID]) |
| --- | --- |
| Open | 12 |
| Closed | 3 |

## 로드 스크립트 예 - Inner join

Inner join은 두 테이블 모두에 존재하는 레코드만 유지합니다(일치하는 필드 값 기준).

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

#### Inner join: 기본 예

로드 스크립트

예제 스크립트를 응용 프로그램에 추가하고 실행합니다. 결과를 보려면 결과 열에 나열된 필드를 응용 프로그램의 시트에 추가합니다.

```
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/ko-KR/sense/May2026/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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Inner join 예: 배송된 주문으로만 주문 축소

개요

주문과 배송된 주문 목록이 있습니다. 배송된 주문만 원합니다.

로드 스크립트

```
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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Inner join 예: 일치하는 레코드만 결합

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* 변경 레코드를 나타내는 데이터 집합으로, Changes라는 테이블에 로드됩니다.

* 소스 시스템 JIRA에서 시작된 변경 레코드를 나타내는 두 번째 데이터 집합입니다. 이는 Inner Join 로드 접두사와 조인하여 로드되고 원래 레코드와 결합됩니다.

이 Inner Join은 두 데이터 집합 모두에서 발견되는 5개의 변경 레코드만 유지되도록 합니다.

로드 스크립트

```
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

이제 5개의 결과 레코드를 검사할 수 있습니다. Inner Join의 결과 테이블에는 두 데이터 집합 모두에 일치하는 정보가 있는 레코드만 포함됩니다.

결과 테이블

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

## 로드 스크립트 예 - Outer join

Outer join은 두 테이블의 모든 레코드를 유지합니다. 일치하는 항목이 없으면 필드는 비워 둡니다.

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

#### Outer join: 기본 예

로드 스크립트

예제 스크립트를 응용 프로그램에 추가하고 실행합니다. 결과를 보려면 결과 열에 나열된 필드를 응용 프로그램의 시트에 추가합니다.

```
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/ko-KR/sense/May2026/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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Outer join: 모든 고객 및 주문의 전체 목록 만들기

개요

일부 고객에게 주문이 없고 일부 주문에 고객 레코드가 없더라도 모든 고객과 주문의 전체 목록을 원합니다.

로드 스크립트

```
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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Outer join: 겹치는 레코드 집합 결합

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* 변경 레코드를 나타내는 데이터 집합으로, 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 |

## 로드 스크립트 예 - Right join

Right join은 소스 테이블의 모든 레코드를 유지하고 대상 테이블에서 일치하는 정보를 추가합니다. 대상 테이블에 일치하는 항목이 없으면 해당 필드는 비어 있습니다.

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

#### Right join: 기본 예

로드 스크립트

예제 스크립트를 응용 프로그램에 추가하고 실행합니다. 결과를 보려면 결과 열에 나열된 필드를 응용 프로그램의 시트에 추가합니다.

```
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/ko-KR/sense/May2026/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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Right join 예: 모든 고객을 일치하는 주문과 결합

개요

소스 테이블은 고객 목록입니다. 모든 고객과 일치하는 주문을 원합니다.

로드 스크립트

```
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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Right join 예: 보조 마스터 데이터 집합으로 대상 테이블 축소

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* 변경 레코드를 나타내는 데이터 집합으로, 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

이제 5개의 결과 레코드를 검사할 수 있습니다.

결과 테이블

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

## 문제 해결 - Cross join

[](https://help.qlik.com/en-US/sense/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/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)

[Select](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)

[Inner](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Inner.htm)

[Outer](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Outer.htm)

[Left](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Left.htm)

[Right](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Right.htm)

[Keep](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm)

[Join 및 Keep을 사용한 테이블 결합](https://help.qlik.com/ko-KR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm)