Join
join 접두사는 로드한 테이블을 기존의 명명된 테이블이나 마지막으로 생성한 데이터 테이블과 조인합니다.
데이터를 결합하면 필드 또는 특성의 추가 집합, 즉 대상 테이블에 아직 존재하지 않는 항목으로 대상 테이블을 확장하는 효과가 있습니다. 소스 데이터 집합과 대상 테이블 사이의 모든 공통 필드 이름은 새 수신 레코드를 연결하는 방법을 해결하는 데 사용됩니다. 이를 일반적으로 "자연 조인"이라고 합니다. Qlik 조인 작업으로 인해 조인 연결의 고유성과 사용된 조인 유형에 따라 처음보다 많거나 적은 레코드가 있는 결과 대상 테이블이 생성될 수 있습니다.
네 가지 유형의 조인이 있습니다.
왼쪽 조인
왼쪽 조인은 가장 일반적인 조인 유형입니다. 예를 들어 트랜잭션 데이터 집합이 있고 이를 참조 데이터 집합과 결합하려는 경우 일반적으로 Left Join을 사용합니다. 먼저 트랜잭션 테이블을 로드한 다음 Left Join 접두사를 통해 조인하는 동안 참조 데이터 집합을 이미 로드된 트랜잭션 테이블에 로드합니다. Left Join은 모든 트랜잭션을 있는 그대로 유지하고 일치하는 항목이 있는 보충 참조 데이터 필드에 추가합니다.
내부 조인
일치하는 연관이 있는 결과에만 관심이 있는 두 개의 데이터 집합이 있는 경우 Inner Join을 사용하는 것이 좋습니다. 이렇게 하면 일치하는 항목이 없으면 로드된 소스 데이터와 대상 테이블에서 모든 레코드가 제거됩니다. 결과적으로 조인 작업이 발생하기 전보다 적은 수의 레코드가 대상 테이블에 남을 수 있습니다.
외부 조인
대상 레코드와 모든 수신 레코드를 모두 유지해야 하는 경우 Outer Join을 사용합니다. 일치하는 항목이 없는 경우 각 레코드 집합은 계속 유지되는 반면 조인 반대쪽의 필드는 채워지지 않은 상태(null)로 유지됩니다.
유형 키워드를 생략하면 기본 조인 유형은 외부 조인입니다.
오른쪽 조인
이 조인 유형은 로드될 모든 레코드를 유지하면서 조인의 대상이 되는 테이블의 레코드를 수신 레코드에 연관 일치가 있는 레코드로만 축소합니다. 이는 때때로 필요한 하위 집합에 이미 미리 로드된 레코드 테이블을 자르는 수단으로 사용하는 틈새 조인 유형입니다.
구문:
[inner | outer | left | right ]Join [ (tablename ) ]( loadstatement | selectstatement )
인수 | 설명 |
---|---|
tablename | 로드된 테이블과 비교할 명명된 테이블입니다. |
loadstatement또는 selectstatement | 로드된 테이블에 사용되는 LOAD 또는 SELECT 문입니다. |
다음 항목은 이 함수를 사용하는 데 도움이 될 수 있습니다.
항목 | 설명 |
---|---|
Join 및 Keep을 사용한 테이블 결합 | 이 항목에서는 "조인" 및 "유지"하는 데이터 집합의 개념에 대한 추가 설명을 제공합니다. |
Keep | Keep 로드 접두사는 Join 접두사와 유사하지만 소스 및 대상 데이터 집합을 결합하지 않습니다. 대신 채택된 작업 유형(내부, 외부, 왼쪽 또는 오른쪽)에 따라 각 데이터 집합을 자릅니다. |
예 1 - 왼쪽 조인: 참조 데이터 집합으로 대상 테이블 강화
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
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 |
데이터 모델 뷰어에서 미리 보기 창을 확장하면 이 전체 결과 집합의 일부가 테이블로 구성된 것을 볼 수 있습니다.
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 | 완료됨 |
10015 |
3 | 04/01/2022 | 15/02/2022 | Low | Closed | 완료됨 |
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 |
예 2 – 내부 조인: 일치하는 레코드만 결합
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
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 |
예 3 – 외부 조인: 겹치는 레코드 집합 결합
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
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 |
예 4 – 오른쪽 조인: 보조 마스터 데이터 집합으로 대상 테이블 자르기
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
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 | - |