Join 및 Keep을 사용하여 테이블 결합 | Qlik Cloud 도움말
기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

JoinKeep을 사용하여 테이블 결합

조인은 두 테이블을 하나로 결합하는 연산입니다. 결과 테이블의 레코드는 원래 테이블에 있는 레코드의 조합이며, 결과 테이블 내의 일정한 조합에 기여하는 2개의 레코드가 하나 또는 여러 공통 필드에 대해 공통의 값을 가지는 이른바 자연 조인이라 불리는 조인이 일반적으로 수행됩니다. Qlik Sense의 경우 스크립트에서 조인을 수행하여 논리 테이블을 생성할 수 있습니다.

이미 스크립트에 있는 테이블을 조인할 수 있습니다. 그러면 Qlik Sense 논리에서는 별도의 테이블이 아니라 조인의 결과인 단일 내부 테이블을 보게 됩니다. 경우에 따라서는 이러한 작업 방식이 필요할 수 있지만 단점이 되는 경우도 있습니다.

  • 로드한 테이블이 커져서 Qlik Sense가 느리게 작동할 수 있습니다.
  • 일부 정보가 손실될 수 있습니다. 원래 테이블의 빈도(레코드의 수)를 더 이상 사용할 수 없게 될 수 있습니다.

테이블을 Qlik Sense에 저장하기 전에 두 테이블 중 하나 또는 둘 다 테이블 데이터의 교집합으로 축소하는 효과를 제공하는 Keep 기능은 명시적 조인을 사용해야 하는 경우의 수를 줄이기 위해 설계되었습니다.

정보 메모이 설명서에서는 일반적으로 내부 테이블이 생성되기 전에 수행되는 조인에 대해 조인이라는 용어를 사용합니다. 내부 테이블이 생성된 후 수행되는 연결도 기본적으로 조인입니다.

SQL SELECT 문 내의 조인

일부 ODBC 드라이버를 사용하면 SELECT 문 내에서 조인을 수행할 수 있습니다. 이는 Join 접두사를 사용하여 조인을 수행하는 것과 거의 동일합니다.

그러나 대부분의 ODBC 드라이버는 완전(양방향) 외부 조인을 수행할 수 없습니다. 왼쪽 또는 오른쪽 외부 조인만 수행할 수 있습니다. 왼쪽(오른쪽) 외부 조인은 조인 키가 왼쪽(오른쪽) 테이블에 존재하는 조합만 포함합니다. 완전 외부 조인은 모든 조합을 포함합니다. Qlik Sense는 자동으로 완전 외부 조인을 수행합니다.

또한 SELECT 문에서 조인을 수행하는 것은 Qlik Sense에서 조인을 수행하는 것보다 훨씬 더 복잡합니다.

SELECT DISTINCTROW

[Order Details].ProductID, [Order Details].

UnitPrice, Orders.OrderID, Orders.OrderDate, Orders.CustomerID

FROM Orders

RIGHT JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID;

SELECT 문은 가상 회사의 주문이 포함된 테이블을 주문 세부 정보가 포함된 테이블과 조인합니다. 이는 오른쪽 외부 조인으로, OrderDetails의 모든 레코드가 포함되며 Orders 테이블에 존재하지 않는 OrderID를 가진 레코드도 포함됨을 의미합니다. 그러나 Orders에는 존재하지만 OrderDetails에는 존재하지 않는 주문은 포함되지 않습니다.

Join

조인을 수행하는 가장 간단한 방법은 스크립트에서 Join 접두사를 사용하는 것입니다. 이 접두사는 내부 테이블을 다른 명명된 테이블이나 이전에 생성된 마지막 테이블과 조인합니다. 조인은 외부 조인이 되며 두 테이블의 값으로 가능한 모든 조합을 생성합니다.

LOAD a, b, c from table1.csv;

join LOAD a, d from table2.csv;

결과 내부 테이블에는 a, b, cd 필드가 있습니다. 레코드 수는 두 테이블의 필드 값에 따라 다릅니다.

정보 메모조인할 필드의 이름은 정확히 같아야 합니다. 조인할 필드의 수는 임의적입니다. 일반적으로 테이블에는 하나 또는 몇 개의 공통 필드가 있어야 합니다. 공통 필드가 없으면 테이블의 데카르트 곱(cartesian product)이 렌더링됩니다. 모든 필드가 공통인 것도 가능하지만 일반적으로 의미가 없습니다. Join 문에 이전에 로드된 테이블의 테이블 이름이 지정되지 않는 한 Join 접두사는 이전에 생성된 마지막 테이블을 사용합니다. 따라서 두 문의 순서는 임의적이지 않습니다.

자세한 내용은 Join을 참조하십시오.

Keep

데이터 로드 스크립트의 명시적 Join 접두사는 두 테이블의 완전 조인을 수행합니다. 결과는 하나의 테이블입니다. 많은 경우 이러한 조인은 매우 큰 테이블을 생성합니다. Qlik Sense의 주요 기능 중 하나는 테이블을 조인하는 대신 테이블 간에 연관성을 만드는 기능으로, 메모리 공간을 줄이고 속도를 높이며 엄청난 유연성을 제공합니다. keep 기능은 명시적 조인을 사용해야 하는 경우의 수를 줄이도록 설계되었습니다.

LOAD 또는 SELECT 문 사이의 Keep 접두사는 두 테이블 중 하나 또는 둘 다를 Qlik Sense에 저장하기 전에 테이블 데이터의 교집합으로 줄이는 효과가 있습니다. Keep 접두사 앞에는 항상 Inner, Left 또는 Right 키워드 중 하나가 와야 합니다. 테이블에서 레코드를 선택하는 것은 해당 조인에서와 동일한 방식으로 이루어집니다. 그러나 두 테이블은 조인되지 않으며 Qlik Sense에 별도로 명명된 두 개의 테이블로 저장됩니다.

자세한 내용은 Keep을 참조하십시오.

Inner

데이터 로드 스크립트의 JoinKeep 접두사 앞에는 Inner 접두사가 올 수 있습니다.

Join 앞에 사용하면 두 테이블 간의 조인이 내부 조인이어야 함을 지정합니다. 결과 테이블에는 양쪽의 전체 데이터 집합이 있는 두 테이블 간의 조합만 포함됩니다.

Keep 앞에 사용하면 두 테이블이 Qlik Sense에 저장되기 전에 공통 교집합으로 축소되어야 함을 지정합니다.

이러한 예에서는 소스 테이블 Table1Table2를 사용합니다.

Table 1
A B
1 aa
2 cc
3 ee
Table2
A C
1 xx
4 yy

Inner Join

먼저 테이블에서 Inner Join을 수행하여 두 테이블 모두에 존재하는 유일한 레코드인 단일 행만 포함하고 두 테이블의 데이터가 결합된 VTable을 생성합니다.

VTable:

SELECT * from Table1;

inner join SELECT * from Table2;

VTable
A B C
1 aa xx

Inner Keep

대신 Inner Keep을 수행하면 여전히 두 개의 테이블이 유지됩니다. 두 테이블은 공통 필드 A를 통해 연관됩니다.

VTab1:

SELECT * from Table1;

VTab2:

inner keep SELECT * from Table2;

VTab1
A B
1 aa
VTab2
A C
1 xx

자세한 내용은 Inner를 참조하십시오.

Left

데이터 로드 스크립트의 JoinKeep 접두사 앞에는 left 접두사가 올 수 있습니다.

Join 앞에 사용하면 두 테이블 간의 조인이 왼쪽 조인이어야 함을 지정합니다. 결과 테이블에는 첫 번째 테이블의 전체 데이터 집합이 있는 두 테이블 간의 조합만 포함됩니다.

Keep 앞에 사용하면 두 번째 테이블이 Qlik Sense에 저장되기 전에 첫 번째 테이블과의 공통 교집합으로 축소되어야 함을 지정합니다.

이러한 예에서는 소스 테이블 Table1Table2를 사용합니다.

Table1
A B
1 aa
2 cc
3 ee
Table2
A C
1 xx
4 yy

먼저 테이블에서 Left Join을 수행하여 Table1의 모든 행을 포함하고 Table2의 일치하는 행의 필드와 결합된 VTable을 생성합니다.

VTable:

SELECT * from Table1;

left join SELECT * from Table2;

VTable
A B C
1 aa xx
2 cc -
3 ee -

대신 Left Keep을 수행하면 여전히 두 개의 테이블이 유지됩니다. 두 테이블은 공통 필드 A를 통해 연관됩니다.

VTab1:

SELECT * from Table1;

VTab2:

left keep SELECT * from Table2;

VTab1
A B
1 aa
2 cc
3 ee
VTab2
A C
1 xx

자세한 내용은 Left를 참조하십시오.

Right

데이터 로드 스크립트의 JoinKeep 접두사 앞에는 right 접두사가 올 수 있습니다.

Join 앞에 사용하면 두 테이블 간의 조인이 오른쪽 조인이어야 함을 지정합니다. 결과 테이블에는 두 번째 테이블의 전체 데이터 집합이 있는 두 테이블 간의 조합만 포함됩니다.

Keep 앞에 사용하면 첫 번째 테이블이 Qlik Sense에 저장되기 전에 두 번째 테이블과의 공통 교집합으로 축소되어야 함을 지정합니다.

이러한 예에서는 소스 테이블 Table1Table2를 사용합니다.

Table1
A B
1 aa
2 cc
3 ee
Table2
A C
1 xx
4 yy

먼저 테이블에서 Right Join을 수행하여 Table2의 모든 행을 포함하고 Table1의 일치하는 행의 필드와 결합된 VTable을 생성합니다.

VTable:

SELECT * from Table1;

right join SELECT * from Table2;

VTable
A B C
1 aa xx
4 - yy

대신 Right Keep을 수행하면 여전히 두 개의 테이블이 유지됩니다. 두 테이블은 공통 필드 A를 통해 연관됩니다.

VTab1:

SELECT * from Table1;

VTab2:

right keep SELECT * from Table2;

VTab1
A B
1 aa
VTab2
A C
1 xx
4 yy

자세한 내용은 Right를 참조하십시오.

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 알려 주십시오!